[ 
https://issues.apache.org/jira/browse/AMQ-4794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15176231#comment-15176231
 ] 

David Jencks commented on AMQ-4794:
-----------------------------------

(same comment added to 3633)
Based on some experiments I'm doing with the activemq web console installed as 
an esa in WAS Liberty (which runs on equinox) I very much doubt this is a 
problem that can be solved in activemq.  The problem appears to be that the jdk 
code is attempting to use a bundle classloader to load it's own classes.  I 
find that adding the relevant package to the boot delegation allows this to 
work.  For me this is done by adding the framework property

org.osgi.framework.bootdelegation=javax.management.remote.rmi

You might need other boot delegation packages as well, so this particular 
setting might not be appropriate everywhere.

Equinox can also have implicit boot delegation, although this seems to have a 
fairly large performance penalty.  I'm not sure which versions of equinox have 
this on or off by default; this might explain the difference in behavior 
between equinox 3.6 and 3.8.  To turn it on (unless otherwise disabled by 
launch code):

osgi.context.bootdelegation=true


> activemq web console fails in karaf+equinox
> -------------------------------------------
>
>                 Key: AMQ-4794
>                 URL: https://issues.apache.org/jira/browse/AMQ-4794
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: OSGi/Karaf, webconsole
>    Affects Versions: 5.8.0, 5.9.0
>         Environment: Linux 64-bit, Oracle JDK 7u40, Karaf 2.3.3
>            Reporter: Amichai Rothman
>            Assignee: Jean-Baptiste Onofré
>
> The web console fails when using equinox.
> Steps to reproduce:
> 1. Extract a stock karaf 2.3.3 installation.
> 2. Set karaf.framework=equinox in etc/config.properties.
> 3. Start karaf.
> 4. Add the activemq feature url (5.8.0 or 5.9-SNAPSHOT).
> 5. Install the activemq-broker feature.
> 6. Browse to http://localhost:8181/activemqweb and see the error page.
> The karaf log shows the stack trace below.
> btw two of the links on the error page are broken, linking to 
> http://localhost:8181/admin and /demo which are invalid even when the web 
> console does work.
> javax.el.ELException: java.lang.RuntimeException: java.io.IOException: Failed 
> to retrieve RMIServer stub: javax.naming.CommunicationException [Root 
> exception is java.rmi.UnmarshalException: error unmarshalling return; nested 
> exception is:        java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)]
>         at 
> javax.el.BeanELResolver.getValue(BeanELResolver.java:298)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> com.sun.el.parser.AstValue.getValue(AstValue.java:138)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.apache.jasper.runtime.PageContextImpl.evaluateExpression(PageContextImpl.java:1001)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:51)[file:/home/amichai/apps/itrade/apache-karaf-2.3.3/data/pax-web-jsp/activemqweb/:]
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:806)[69:org.apache.geronimo.specs.geronimo-servlet_2.5_spec:1.2]
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:806)[69:org.apache.geronimo.specs.geronimo-servlet_2.5_spec:1.2]
>         at 
> org.ops4j.pax.web.jsp.JspServletWrapper$2.call(JspServletWrapper.java:144)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.ops4j.pax.web.jsp.JspServletWrapper$2.call(JspServletWrapper.java:139)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.ops4j.pax.web.jsp.JspServletWrapper.service(JspServletWrapper.java:136)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1329)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.apache.activemq.web.SessionFilter.doFilter(SessionFilter.java:45)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.apache.activemq.web.filter.ApplicationContextFilter.doFilter(ApplicationContextFilter.java:102)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.ops4j.pax.web.service.internal.WelcomeFilesFilter.doFilter(WelcomeFilesFilter.java:193)[97:org.ops4j.pax.web.pax-web-runtime:1.1.14]
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:70)[98:org.ops4j.pax.web.pax-web-jetty:1.1.14]
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:556)[78:org.eclipse.jetty.security:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1038)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:124)[98:org.ops4j.pax.web.pax-web-jetty:1.1.14]
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:374)[79:org.eclipse.jetty.servlet:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:972)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:81)[98:org.ops4j.pax.web.pax-web-jetty:1.1.14]
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.Server.handle(Server.java:363)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)[73:org.eclipse.jetty.http:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)[73:org.eclipse.jetty.http:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)[77:org.eclipse.jetty.server:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[71:org.eclipse.jetty.util:7.6.8.v20121106]
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[71:org.eclipse.jetty.util:7.6.8.v20121106]
>         at java.lang.Thread.run(Thread.java:724)[:1.7.0_40]
> Caused by: java.lang.RuntimeException: java.io.IOException: Failed to 
> retrieve RMIServer stub: javax.naming.CommunicationException [Root exception 
> is java.rmi.UnmarshalException: error unmarshalling return; nested exception 
> is:        java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)]
>         at 
> org.apache.activemq.web.RemoteJMXBrokerFacade.createConnection(RemoteJMXBrokerFacade.java:165)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.apache.activemq.web.RemoteJMXBrokerFacade.getMBeanServerConnection(RemoteJMXBrokerFacade.java:114)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.apache.activemq.web.RemoteJMXBrokerFacade.getBrokerAdmin(RemoteJMXBrokerFacade.java:88)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at 
> org.apache.activemq.web.RemoteJMXBrokerFacade.getBrokerName(RemoteJMXBrokerFacade.java:101)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)[:1.7.0_40]
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_40]
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_40]
>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_40]
>         at 
> javax.el.BeanELResolver.getValue(BeanELResolver.java:293)[102:org.ops4j.pax.web.pax-web-jsp:1.1.14]
>         ... 54 more
> Caused by: java.io.IOException: Failed to retrieve RMIServer stub: 
> javax.naming.CommunicationException [Root exception is 
> java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
>        java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)]
>         at 
> javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:358)
>         at 
> javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)[:1.7.0_40]
>         at 
> org.apache.activemq.web.RemoteJMXBrokerFacade.createConnection(RemoteJMXBrokerFacade.java:146)[107:org.apache.activemq.activemq-web-console:5.8.0]
>         ... 62 more
> Caused by: javax.naming.CommunicationException [Root exception is 
> java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
>        java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)]
>         at 
> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)[:1.7.0_40]
>         at 
> com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:203)[:1.7.0_40]
>         at 
> javax.naming.InitialContext.lookup(InitialContext.java:411)[:1.7.0_40]
>         at 
> javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1925)
>         at 
> javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1892)
>         at 
> javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:275)
>         ... 64 more
> Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested 
> exception is:        java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)
>         at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown 
> Source)[:1.7.0_40]
>         at 
> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114)[:1.7.0_40]
>         ... 69 more
> Caused by: java.lang.ClassNotFoundException: 
> javax.management.remote.rmi.RMIServerImpl_Stub (no security manager: RMI 
> class loader disabled)
>         at 
> sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:393)[:1.7.0_40]
>         at 
> sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:185)[:1.7.0_40]
>         at 
> java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)[:1.7.0_40]
>         at 
> java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264)[:1.7.0_40]
>         at 
> sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:214)[:1.7.0_40]
>         at 
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1610)[:1.7.0_40]
>         at 
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515)[:1.7.0_40]
>         at 
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)[:1.7.0_40]
>         at 
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)[:1.7.0_40]
>         at 
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)[:1.7.0_40]
>         ... 71 more
>         



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to