Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
-
5.7.0
Description
I tried using Jolokia to browse the JSON view of JMX for ActiveMQ. Things generally worked great, however the browseMessages() function causes issues with the Jolokia JSON marshaller - it seems we return beans which are not really usable as is. Not sure how easy this is to fix...
NOTE the browse() works fine; I wasn't sure if all bean properties were properly exposed in the CompositeData browse() function - so not sure how big a deal not having browseMessages() is...
Here's the stack trace when browsing a queue called 'cheese' on a JVM running ActiveMQ and jolokia servlet such as with a URL like:
http://localhost:8080/jolokia/exec/org.apache.activemq:BrokerName=localhost,Destination=cheese,Type=Queue/browseMessages()
The offending bit of the stack trace is: org.apache.activemq.ConnectionClosedException: The connection is already closed at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1462) at
I guess there's a connection property or something on the message maybe?
{ error_type: "java.lang.IllegalStateException", error: "java.lang.IllegalStateException : Error while extracting metaData from ActiveMQConnection {id=ID:stracmac.home-58797-1352910163300-7:1,clientId=ID:stracmac.home-58797-1352910163300-6:1,started=false}", status: 500, stacktrace: "java.lang.IllegalStateException: Error while extracting metaData from ActiveMQConnection {id=ID:stracmac.home-58797-1352910163300-7:1,clientId=ID:stracmac.home-58797-1352910163300-6:1,started=false} at org.jolokia.converter.json.BeanExtractor.extractBeanPropertyValue(BeanExtractor.java:242) at org.jolokia.converter.json.BeanExtractor.extractJsonifiedPropertyValue(BeanExtractor.java:161) at org.jolokia.converter.json.BeanExtractor.exctractJsonifiedValue(BeanExtractor.java:147) at org.jolokia.converter.json.BeanExtractor.extractObject(BeanExtractor.java:78) at org.jolokia.converter.json.ObjectToJsonConverter.callHandler(ObjectToJsonConverter.java:351) at org.jolokia.converter.json.ObjectToJsonConverter.extractObject(ObjectToJsonConverter.java:181) at org.jolokia.converter.json.BeanExtractor.extractJsonifiedPropertyValue(BeanExtractor.java:169) at org.jolokia.converter.json.BeanExtractor.exctractJsonifiedValue(BeanExtractor.java:147) at org.jolokia.converter.json.BeanExtractor.extractObject(BeanExtractor.java:78) at org.jolokia.converter.json.ObjectToJsonConverter.callHandler(ObjectToJsonConverter.java:351) at org.jolokia.converter.json.ObjectToJsonConverter.extractObject(ObjectToJsonConverter.java:181) at org.jolokia.converter.json.ListExtractor.extractObject(ListExtractor.java:71) at org.jolokia.converter.json.ObjectToJsonConverter.callHandler(ObjectToJsonConverter.java:351) at org.jolokia.converter.json.ObjectToJsonConverter.extractObject(ObjectToJsonConverter.java:181) at org.jolokia.converter.json.ObjectToJsonConverter.extractObjectWithContext(ObjectToJsonConverter.java:144) at org.jolokia.converter.json.ObjectToJsonConverter.convertToJson(ObjectToJsonConverter.java:116) at org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:340) at org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:140) at org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:175) at org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:79) at org.jolokia.http.AgentServlet$3.handleRequest(AgentServlet.java:296) at org.jolokia.http.AgentServlet.handle(AgentServlet.java:228) at org.jolokia.http.AgentServlet.doGet(AgentServlet.java:193) at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) at org.eclipse.jetty.server.Server.handle(Server.java:350) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jolokia.converter.json.BeanExtractor.extractBeanPropertyValue(BeanExtractor.java:237) ... 47 more Caused by: org.apache.activemq.ConnectionClosedException: The connection is already closed at org.apache.activemq.ActiveMQConnection.checkClosed(ActiveMQConnection.java:1462) at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1449) at org.apache.activemq.ActiveMQConnection.getMetaData(ActiveMQConnection.java:432) ... 52 more " }