Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 18406 invoked from network); 14 Apr 2006 23:58:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 14 Apr 2006 23:58:57 -0000 Received: (qmail 2178 invoked by uid 500); 14 Apr 2006 23:58:55 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 1871 invoked by uid 500); 14 Apr 2006 23:58:54 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 1860 invoked by uid 99); 14 Apr 2006 23:58:54 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Apr 2006 16:58:54 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [209.237.227.198] (HELO brutus.apache.org) (209.237.227.198) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Apr 2006 16:58:53 -0700 Received: from brutus (localhost.localdomain [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 7F84B71429D for ; Fri, 14 Apr 2006 23:58:00 +0000 (GMT) Message-ID: <68318590.1145059080493.JavaMail.jira@brutus> Date: Fri, 14 Apr 2006 23:58:00 +0000 (GMT+00:00) From: "Aaron Mulder (JIRA)" To: dev@geronimo.apache.org Subject: [jira] Commented: (GERONIMO-1851) Proxy logic busted In-Reply-To: <112329522.1145051280334.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N [ http://issues.apache.org/jira/browse/GERONIMO-1851?page=comments#action_12374585 ] Aaron Mulder commented on GERONIMO-1851: ---------------------------------------- Appears to be caused by BasicProxyManager.createProxy(name, ClassLoader) to include classes with an empty constructor in addition to interfaces. I'm removing the bit about classes with empty constructors and doing a full build with tests, and if it works, checking it in. > 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 > 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.(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