javax.xml.ws.Endpoint.publish(字符串地址)抛出NPE(Java8U162)

javax.xml.ws.Endpoint.publish(字符串地址)抛出NPE(Java8U162),java,java-8,Java,Java 8,将java从8u151升级到8u162后,它开始将NPE放入javax.xml.ws.Endpoint.publish(字符串地址)。使用8u151,一切正常,现在它只在提供的服务器上下文中发布一个(第一个)端点,即第二个get NPE(请参阅下面的日志)。我认为ServerMgr实现有问题(无法找到源代码来确保)。任何帮助都将不胜感激 com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.lan

将java从8u151升级到8u162后,它开始将NPE放入
javax.xml.ws.Endpoint.publish(字符串地址)
。使用8u151,一切正常,现在它只在提供的服务器上下文中发布一个(第一个)端点,即第二个get NPE(请参阅下面的日志)。我认为ServerMgr实现有问题(无法找到源代码来确保)。任何帮助都将不胜感激

com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error:
java.lang.NullPointerException at
com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:130) ~ [?:1.8.0_162] at
com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish (HttpEndpoint.java:64) ~
[?:1.8.0_162] at
com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish
(EndpointImpl.java:232) ~ [?:1.8.0_162]

经过调查发现,http Jetty共享服务器导致问题。这似乎与最新的java 8版本(8u152、8u161、8u162)不兼容。

@MattiasIsegranBergander我的解决方法是在提供的服务器上下文中发布端点。例:

    Endpoint endpoint = Endpoint.create(SOAPBinding.SOAP11HTTP_BINDING, webService);
    try {
        JettyHttpServerProvider.setServer(server);
        HttpContext context = new JettyHttpServerProvider().createHttpServer(new InetSocketAddress(port), 5)
                .createContext("/" + serviceName);
        endpoint.publish(context);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }

还希望在9.4.x版本的jetty库中添加此修复()。干得好@MattiasIsegranBergander.

您或其他人对此有何更新?使用最新的jetty(9.4.11 20180605)进行了尝试,jdk 8u172仍然保持不变。我认为这是jetty中的问题,并在9.4.9中修复:+2114 JettyHttpServerProvider中的修复NPE看起来像是jetty的修复,而jdk中针对不同事物的修复一起导致了这一问题。如果只有一种修复方法在那里,那么看起来很好。8u152中的Jdk修复程序:I8U152添加了一个getAddress,并添加了jetty,因此可以将其延迟绑定,以便稍后返回null。目前已向jetty提交问题: