Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-4177

browseMessages() fails when using Jolokia to browse JMX

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 5.8.0
    • 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 "
      }

      Attachments

        Activity

          People

            rajdavies Robert Davies
            jstrachan James Strachan
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: