Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-WS客户端在通过tomcat manager重新部署后失败_Java_Tomcat_Jax Ws - Fatal编程技术网

Java JAX-WS客户端在通过tomcat manager重新部署后失败

Java JAX-WS客户端在通过tomcat manager重新部署后失败,java,tomcat,jax-ws,Java,Tomcat,Jax Ws,我有一个应用程序充当JAX-WS服务器的客户端。如果我通过将war放入tomcat webapps目录直接部署应用程序,即使进行热部署,连接也可以正常工作。但是,如果我取消部署,然后使用tomcat管理器从一个自动脚本重新部署应用程序,那么每当它试图建立连接时,就会抛出下面的异常 Caused by: java.lang.NullPointerException at com.ctc.wstx.util.SymbolTable.copyArrays(SymbolTable.jav

我有一个应用程序充当JAX-WS服务器的客户端。如果我通过将war放入tomcat webapps目录直接部署应用程序,即使进行热部署,连接也可以正常工作。但是,如果我取消部署,然后使用tomcat管理器从一个自动脚本重新部署应用程序,那么每当它试图建立连接时,就会抛出下面的异常

Caused by: java.lang.NullPointerException
        at com.ctc.wstx.util.SymbolTable.copyArrays(SymbolTable.java:574)
        at com.ctc.wstx.util.SymbolTable.findSymbol(SymbolTable.java:403)
        at com.ctc.wstx.sr.StreamScanner.parseLocalName(StreamScanner.java:1770)
        at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2914)
        at com.ctc.wstx.sr.BasicStreamReader.handleRootElem(BasicStreamReader.java:2093)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2073)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
        at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.next(Unknown Source)
        at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(Unknown Source)
        at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextContent(Unknown Source)
        at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextElementContent(Unknown Source)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.hasWSDLDefinitions(Unknown Source)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
        at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
        at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
        [... continues into application specific code calling the service ...]
出现在这里的搜索中,有人遇到了类似的问题,但除了使用SpringWS之外没有其他解决方案,而SpringWS目前并不适合我


以前有没有人遇到过这个问题,并且能够解决这个问题?我对通过tomcat manager进行部署与通过将文件放置在webapps中进行部署有所不同的做法感到有点困惑。

我也遇到了这个问题。问题是我在类路径中依赖于cxf-rt-frontend-jaxws-2.5.2.jar,其中包含org.apache.cxf.jaxws.spi.ProviderImpl的实现,该实现与JDK附带的rt.jar中的同一个类冲突

cxf rt前端jaxws的更高版本不再包含此类。升级到cxf-rt-frontend-jaxws-2.6.15.jar后,问题得到解决


我预计问题会间歇性出现,因为每次部署WAR时,类加载器都会随机选择ProviderImpl的哪个实现。

在我的例子中,问题出现在SymbolTable类上,它位于rt.jar的com.sun.org.apache.xerces.internal.util.SymbolTable和wstx-asl-3.2.7.jar的com.ctc.wstx.util.SymbolTable上。从我的类路径中删除wstx asl库后,我们通过tomcat管理器重新部署,没有出现错误