geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Bohn <joe.b...@earthlink.net>
Subject Re: Help ... proxy problem with tomcat web connectors
Date Mon, 31 Oct 2005 18:14:09 GMT

Well I've figured out a way around this problem but I can't for the life 
of me explain why it eliminates the problem.  This may even be a problem 
in CGLib but this work around at least avoids it for now.

It seems to be a problem with the selection of the class loader.

Here's the class/interface configuration with the problem:
- We currently have defined 2 interfaces that both extend from a common 
interface (say A and B that extend from Z).   An implementation 
class(IA) implements one of the interfaces(A).  Another implementation 
class(IB) extends IA and implements B.
- When we attempt to create a proxy for the GBean object, we get the 
NoClassDefFoundError exception in the original post while attempting to 
load the interface A.

I took a look at Jetty(which isn't hitting this problem) and the only 
difference appeared to be another interface(C) that is in the same 
package as B between the interface B and the class IB (which is really 
strange because A was the interface pointed to by the error ... not B).

After rebuilding I no longer get the NoClassDefFoundError exception.

Anybody have an explanation or theory on this?
Does somebody with more experience on CGLib think it's likely a problem 
there?


Joe Bohn wrote:
> I'm trying to fix a problem with in the web console where it is supposed 
> to list the connections ... but instead gets an error (at the bottom of 
> this note).
> 
> It seems to be a problem actually generating the proxy for the class and 
> I lose touch of things when it gets into cglib.
> 
> In short ... here is the scenario:
> - Discover via the KernelManagementHelper that there are 3 connections 
> and gets the object the names of those connections
>         - TomcatAJPConnector (class is ConnectorGBean)
>         - TomcatWebConnector (class is ConnectorGBean)
>         - TomcatWebSSLConnector (class is HttpsConnectorGBean)
> - Attempt to create proxies for the 3 connections.   This works for for 
> the first two listed about but fails building the proxy for the 
> TomcatWebSSLConnector GBean.
> - Looking at the BasicProxyManager I can see it creating the Enhancer 
> and associating all of the interfaces.  This GBean has 5 interfaces 
> which are reduced to 3 in the ManagedProxyFactory (the ones with the * 
> are the ones that remain after reduction)
>         - o.a.g.management.geronimo.NetworkConnector
>         * o.a.g.management.geronimo.SecureConnector
>         * o.a.g.tomcat.TomcatWebConnector
>         - o.a.g.management.WebConnector
>         * o.a.g.kernel.proxy.GeronimoManagedBean
> - These remaining 3 interfaces are used to set the Enhanced interfaces 
> (which seems strange to me because I would think that we would have 
> wanted all 5 interfaces in the proxy ... is this a problem?) and, since
   No, this interface reduction is doing it's job to ensure that we have 
the least number of interfaces while still representing all of the 
object's capabilities.
> there is more than 1 interface left, Object is set as the superClass.
> - When we finally invoke the enhancer.createClass() we get a 
> NoClassDefFoundError exception for the TomcatWebConnector interface. 
> This is also strange because at lease one of the other connector GBeans 
> (TomcatWebConnector) also implements this interface and it was 
> successful creating that proxy.
> 
> Any ideas?
> 
> stack trace:
>   08:52:55,740 ERROR [KernelManagementHelper] Unable to look up related 
> GBeannet.sf.cglib.core.CodeGenerationException: 
> java.lang.reflect.InvocationTargetException-->null
>         at 
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237) 
> 
>         at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
>         at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
>         at 
> org.apache.geronimo.kernel.basic.BasicProxyManager$ManagedProxyFactory.<init>(BasicProxyManager.java:222)

> 
>         at 
> org.apache.geronimo.kernel.basic.BasicProxyManager.createProxyFactory(BasicProxyManager.java:92)

> 
>         at 
> org.apache.geronimo.kernel.basic.BasicProxyManager.createProxy(BasicProxyManager.java:119)

> 
>         at 
> org.apache.geronimo.kernel.basic.BasicProxyManager.createProxies(BasicProxyManager.java:156)

> 
>         at 
> org.apache.geronimo.console.util.KernelManagementHelper.getWebConnectors(KernelManagementHelper.java:339)

> 
>         at 
> org.apache.geronimo.console.util.PortletManager.getWebConnectors(PortletManager.java:150)

> 
>         at 
> org.apache.geronimo.console.webmanager.ConnectorPortlet.doList(ConnectorPortlet.java:375)

> 
>         at 
> org.apache.geronimo.console.webmanager.ConnectorPortlet.doView(ConnectorPortlet.java:360)

> 
>         at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247)
>         at javax.portlet.GenericPortlet.render(GenericPortlet.java:175)
>         at 
> org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:218)
>         at 
> org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:158)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.pluto.core.PortletServlet.service(PortletServlet.java:153)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:120)

> 
>         at 
> org.apache.pluto.invoker.impl.PortletInvokerImpl.render(PortletInvokerImpl.java:73) 
> 
>         at 
> org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119) 
> 
>         at 
> org.apache.pluto.portalImpl.core.PortletContainerWrapperImpl.renderPortlet(PortletContainerWrapperImpl.java:70)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.PortletFragment.service(PortletFragment.java:168)

> 
>         at 
> org.apache.jsp.WEB_002dINF.aggregation.ColumnFragment_jsp._jspService(org.apache.jsp.WEB_002dINF.aggregation.ColumnFragment_jsp:65)

> 
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.AbstractFragment.service(AbstractFragment.java:112)

> 
>         at 
> org.apache.jsp.WEB_002dINF.aggregation.RowFragment_jsp._jspService(org.apache.jsp.WEB_002dINF.aggregation.RowFragment_jsp:64)

> 
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.AbstractFragment.service(AbstractFragment.java:112)

> 
>         at 
> org.apache.jsp.WEB_002dINF.aggregation.PageFragment_jsp._jspService(org.apache.jsp.WEB_002dINF.aggregation.PageFragment_jsp:67)

> 
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.AbstractFragment.service(AbstractFragment.java:112)

> 
>         at 
> org.apache.jsp.WEB_002dINF.aggregation.PageFragment_jsp._jspService(org.apache.jsp.WEB_002dINF.aggregation.PageFragment_jsp:67)

> 
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.AbstractFragment.service(AbstractFragment.java:112)

> 
>         at 
> org.apache.jsp.WEB_002dINF.aggregation.RootFragment_jsp._jspService(org.apache.jsp.WEB_002dINF.aggregation.RootFragment_jsp:170)

> 
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

> 
>         at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

> 
>         at 
> org.apache.pluto.portalImpl.aggregation.AbstractFragment.service(AbstractFragment.java:112)

> 
>         at org.apache.pluto.portalImpl.Servlet.doGet(Servlet.java:254)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

> 
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

> 
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
> 
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
> 
>         at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)

> 
>         at 
> org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:46)

> 
>         at 
> org.apache.geronimo.tomcat.valve.PolicyContextValve.invoke(PolicyContextValve.java:50)

> 
>         at 
> org.apache.geronimo.tomcat.valve.TransactionContextValve.invoke(TransactionContextValve.java:53)

> 
>         at 
> org.apache.geronimo.tomcat.valve.ComponentContextValve.invoke(ComponentContextValve.java:47)

> 
>         at 
> org.apache.geronimo.tomcat.valve.InstanceContextValve.invoke(InstanceContextValve.java:60)

> 
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
> 
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
> 
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
> 
>         at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)

> 
>         at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
> 
>         at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

> 
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
> 
>         at java.lang.Thread.run(Thread.java:534)
> Caused by: java.lang.reflect.InvocationTargetException
>         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

> 
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at 
> net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:384)
>         at 
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219) 
> 
>         ... 116 more
> Caused by: java.lang.NoClassDefFoundError: 
> org/apache/geronimo/tomcat/TomcatWebConnector
>         at java.lang.ClassLoader.defineClass0(Native Method)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
> 
> 

-- 
Joe Bohn
joe.bohn@earthlink.net

"He is no fool who gives what he cannot keep, to gain what he cannot 
lose."   -- Jim Elliot

Mime
View raw message