[ http://issues.apache.org/jira/browse/GERONIMO-1851?page=all ] Aaron Mulder resolved GERONIMO-1851: ------------------------------------
Resolution: Fixed > Proxy logic busted > ------------------ > > Key: GERONIMO-1851 > URL: http://issues.apache.org/jira/browse/GERONIMO-1851 > Project: Geronimo > Type: Bug > Security: public(Regular issues) > Components: kernel > Versions: 1.1 > Reporter: Aaron Mulder > Assignee: Dain Sundstrom > Priority: Critical > Fix For: 1.1 > > If you go to the Import/Export portlet in 1.1, you get this: > UNEXPECTED ERROR for class > org.apache.geronimo.jetty.JettyWebAppContext$$EnhancerByCGLIB$$1b72c5bb > (geronimo/welcome-jetty/1.1-SNAPSHOT/car?J2EEApplication=null,j2eeType=WebModule,name=geronimo/welcome-jetty/1.1-SNAPSHOT/car) > java.lang.ArrayIndexOutOfBoundsException: -1 > at > org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.createGBeanInvokers(ProxyMethodInterceptor.java:116) > at > org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.<init>(ProxyMethodInterceptor.java:70) > at > org.apache.geronimo.kernel.basic.BasicProxyManager.getMethodInterceptor(BasicProxyManager.java:317) > at > org.apache.geronimo.kernel.basic.BasicProxyManager$ManagedProxyFactory.createProxy(BasicProxyManager.java:290) > at > org.apache.geronimo.kernel.basic.BasicProxyManager.createProxy(BasicProxyManager.java:179) > at > org.apache.geronimo.console.util.KernelManagementHelper.getModuleForConfiguration(KernelManagementHelper.java:850) > The error is generated at the last line of this snippet of > ProxyMethodInterceptor: > invokers[getSuperIndex(proxyType, proxyType.getMethod("equals", > new Class[]{Object.class}))] = new EqualsInvoke(kernel); > invokers[getSuperIndex(proxyType, proxyType.getMethod("hashCode", > null))] = new HashCodeInvoke(); > invokers[getSuperIndex(proxyType, proxyType.getMethod("toString", > null))] = new ToStringInvoke(proxyType.getName()); > if(GeronimoManagedBean.class.isAssignableFrom(proxyType)) { > invokers[getSuperIndex(proxyType, > proxyType.getMethod("getState", null))] = new GetStateInvoke(kernel); > invokers[getSuperIndex(proxyType, > proxyType.getMethod("getStateInstance", null))] = new > GetStateInstanceInvoke(kernel); > invokers[getSuperIndex(proxyType, > proxyType.getMethod("start", null))] = new StartInvoke(kernel); > In other words, it is returning a -1 from getSuperIndex on the "start()" > method for the proxyType. However, the "if" statement established that > ProxyType is assignable to GeronimoManagedBean, which has a "start()" method. > So it seems like the logic that constructs the invokers and/or whatever > getSuperIndex uses is not finding all the methods that the proxy exposes, or > else there are some classloader issues causing identical methods to be > detected as different, etc. > The logic displayed above is unchanged from HEAD where the same portlet > works, though the portlet code has changed significantly. I'm not sure > what's different elsewhere in the ProxyMethodInterceptor class or the rest of > the proxy infrastructure. > To replicate this, start Geronimo, and click the "Plugins" entry in the > console. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira