You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "David Jencks (JIRA)" <ji...@apache.org> on 2016/03/02 19:45:18 UTC

[jira] [Commented] (AMQ-4794) activemq web console fails in karaf+equinox

    [ 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)