2017-01-11 48 views
0

时,我得到一个NullPointerException飘飞在我的嵌入式码头应用:的NullPointerException嵌入式码头使用JMX

java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.eclipse.jetty.jmx.ObjectMBean.getAttribute(ObjectMBean.java:349) 
     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:647) 
     at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678) 
     at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1445) 
... 
Caused by: java.lang.NullPointerException 
     at org.eclipse.jetty.server.handler.ContextHandler.isShutdown(ContextHandler.java:682) 
     ... 28 more 

我已经设置了JMX这样的:

Server server = new Server(); 
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); 
MBeanContainer mbContainer = new MBeanContainer(mBeanServer); 
server.addBean(mbContainer); 

出现这种情况随机(并不总是)在服务器启动时,并且只有当我的Prometheous JMX Exporter在同一台机器上运行时,最有可能在Jetty尚未准备好处理连接的阶段连接到JMX服务器。

任何想法如何解决这个问题?

+0

码头的哪个版本是这个。 ? –

回答

1

JMX导出器应该正常处理错误,所以您不必担心JMX端。

看着码头代码,这只是一个同步访问器,所以我不知道如何才能从中获得NPE。推测该对象为空,所以这可能值得提交一个针对码头的错误。

+0

是的,我想到了自己。我确实计划向Jetty发出一个错误。看起来像是一个码头错误,可以很容易地修复。 – raimohanska