【问题标题】:JAX-WS client fails after redployment via tomcat managerJAX-WS 客户端在部署到 tomcat 管理器后失败
【发布时间】:2013-10-01 14:34:15
【问题描述】:

我有一个应用程序充当 JAX-WS 服务器的客户端。如果我通过将战争放入 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 ...]

This post 在搜索中出现在这里,与遇到类似问题的人一起搜索,但除了使用 spring-ws 之外没有其他解决方案,这对我来说并不是一个真正的选择。

以前有没有人遇到过这个问题并能够解决这个问题?我对这里发生的事情感到有点困惑,通过 tomcat 管理器进行部署与通过将文件放在 webapps 中进行部署不同。

【问题讨论】:

    标签: java tomcat jax-ws


    【解决方案1】:

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

    后来的 cxf-rt-frontend-jaxws 版本不再包含这个类。升级到cxf-rt-frontend-jaxws-2.6.15.jar后问题解决了。

    我预计问题会间歇性发生,因为类加载器会在每次部署 WAR 时随机选择要使用的 ProviderImpl 实现。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 2010-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        相关资源
        最近更新 更多