我的Embedded Jetty应用程序中偶尔会出现NullPointerException:
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服务器。 / p>
任何想法如何解决这个问题?
答案 0 :(得分:1)
JMX导出器应该正常处理错误,因此您不必担心JMX端。
查看码头代码,这只是一个同步存取器,所以我不知道如何从中获取NPE。据推测,该对象为空,因此这可能值得提出针对码头的错误。