2014-07-15 61 views
0

我试图在我的tomcat上安装Jolokia。Jolokia当响应太大时崩溃

http://myserver/jolokia/read/Catalina:type=ThreadPool,name=*/ 

我得到的是这种

{ “ERROR_TYPE”: “javax.management.RuntimeOperationsException”, “错误”: “javax.management.RuntimeOperationsException :异常调用方法 readBufSize” “status”:500,“stacktrace”:“javax.management.RuntimeOperationsException: 异常调用方法readBufSize \ n \ tat org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:197)\ n \ tat com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(De faultMBeanServerInterceptor.java:647)\n\tat com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)\ n \ tat org.jolokia.handler.ReadHandler.getAttribute(ReadHandler.java:208) \ n \ tat org.jolokia.handler.ReadHandler.fetchAttributes(ReadHandler.java:158)\ n \ tat org.jolokia.handler.ReadHandler.fetchAttributesForMBeanPattern(ReadHandler.java:97)\ n \ tat org.jolokia org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:34)\ n \ tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler .java:150)\ n \ tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:91)\ n \ tat org.jolokia.backend .LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:81)\ n \ tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:196)\ n \ tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java :175)\ n \ tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:150)\ n \ tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:79)\ n \ tat org.jolokia.http.AgentServlet $ 3.handleRequest(AgentServlet.java:239)\ n \ tat org.jolokia.http.AgentServlet.handle(AgentServlet.java:200)\ n \ tat org.jolokia.http.AgentServlet .doGet(AgentServlet.java:183)\ n \ tat javax.servlet.http.HttpServlet.service(HttpServlet.java:621)\ n \ tat javax.servlet.http.H ttpServlet.service(HttpServlet.java:728)\ n \ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)\ n \ tat org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:210)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)\ n \ tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain。 java:243)\ n \ tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)\ n \ tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) \ n \ tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)\ n \ tat org.apache.catalina.authenticator.Authen ticatorBase.invoke(AuthenticatorBase.java:502)\ n \ tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)\ n \ tat org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:100)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)\ n \ tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 408)\ n \ tat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)\ n \ tat org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol。\ n \ tat org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor。运行(NioEndpoint.java:1679)\ n \ tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\ n \ tat java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java: 615)\ n \ tat java.lang.Thread.run(Thread.java:744)\ n原因: java.lang.NullPointerException \ n \ tat org.apache.tomcat.util.net.SocketProperties.getRxBufSize( (Native Method)\ n \ t org.apache.tomcat.util.net.NioEndpoint.getReadBufSize(NioEndpoint.java:619)\ n \ tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\ n \ tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\ n \ tat java.lang.reflect.Method.invoke(Method的.java:606)\ n \ TAT org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:190)\ n \吨... 38等等\ n“}

看起来Jolokia无法处理大量回应。任何方式我可以解决这个问题?我只需要一些属性,但我无法弄清楚如何在一个请求中获得2个属性。

这是我的椒版本

{ “时间戳”:1405453600, “状态”:200, “请求”:{ “类型”: “版本”}, “值”:{ “协议” :“5.0”,“agent”:“0.95”,“info”:{“product”:“tomcat”,“vendor”:“Apache”,“version”:“7.0.47”}}}

回答

1

这可能不是完整的堆栈跟踪。这并不是说Jolokia无法处理大型对象(好吧,如果有问题,这是你的伺服器容器),因为你得到了完整的回应。原因(隐藏在“38更多”)是方法'getReadBufSize'抛出一个异常。

你有两个选择,但:

  • 使用查询参数ignoreErrors=true如果你喜欢这款大容量的要求是相当有用的。
  • 确实可以选择多个属性:对于GET请求,只需使用','将它们连接在一起,对于POST请求使用JSON数组。全部在reference manual中解释。根据您的要求:http://myserver/jolokia/read/Catalina:type=ThreadPool,name=*/attr1,attr2虽然您需要一个1.0.0 Jolokia代理。
+0

谢谢,因为我更新了我的Jolokia Agent,我可以获得多个属性,所以我不再遇到这个问题。 – pmartin8

相关问题