2017-02-20 13 views
0

weberviceが照会されるArquillian(1.1.12.Final)経由でTomcat 8.5.11にデプロイされたアプリケーションがあります。アプリケーションには、提供された依存関係としてApache CXF 3.1.10があります。すべてのcxfとspring JARがTomcatのendorsedライブラリディレクトリに追加されました(私は承認されたすべてのJARが正しくロードされていることを確認しました)。Tomcat8 org.apache.cxf.BusFactory.getBusFactoryClass BusFactory実装クラス名の決定に失敗しました

これにもかかわらず、上記のエラーメッセージが表示されます。スタックトレースの関連ビットは

java.lang.NullPointerException 
    at org.apache.cxf.BusFactory.getBusFactoryClass(BusFactory.java:397) 
    at org.apache.cxf.BusFactory.newInstance(BusFactory.java:317) 
    at org.apache.cxf.BusFactory.newInstance(BusFactory.java:304) 
    at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:107) 
    at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:244) 
    at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:228) 
    at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:135) 
    at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:129) 
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:82) 
    at javax.xml.ws.Service.<init>(Service.java:77) 

[省略]

java.lang.NullPointerException 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.load(ExtensionManagerImpl.java:166) 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.load(ExtensionManagerImpl.java:160) 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.load(ExtensionManagerImpl.java:107) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:178) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:185) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:40) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:36) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:32) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:146) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:122) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:94) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:83) 
    at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:107) 
    at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:244) 
    at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:228) 
    at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:135) 
    at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:129) 
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:82) 
    at javax.xml.ws.Service.<init>(Service.java:77) 

NPEは、Webサービスの初期化中に発生します。失敗したコードが

// org.apache.cxf.bus.extension.ExtensionManagerImpl 
final void load(String resource) throws IOException { 
    if (loader != getClass().getClassLoader()) { 
     load(resource, getClass().getClassLoader()); 
    } 
    load(resource, loader); 
} 

であることはgetClass().getClassLooader()への呼び出しがnullを返すことが判明しました。私はこの結果に戸惑って、getClass().getClassLoader() is null, why?がまだ分かりません。これは、CXFがbootclasspath(!?!)を使ってロードされたことを意味すると思います。

答えて

0

この問題は、CXFジャーを$CATALINA_HOME/endoresedに置くことによって発生しました。これは、すべてのWebアプリケーションに共通するジャーを配置するための間違った場所です。 「XMLパーサーとJava」の節のhttp://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.htmlで説明します。

関連する問題