2010-05-12 32 views
3

我的例子中的所有服務類都擴展了javax.xml.ws.Service。在tomcat下的web應用中運行webservice jax-ws客戶端

但真正的調用,因爲我看到在引擎蓋下通過第三方庫的工作。 在我的情況下,tomcat使用Axis2。

首先我應該問一下,Tomcat使用什麼jar來運行web服務

二,有沒有辦法改變它們?

三,這個例外是什麼意思?它需要Tomcat/lib目錄中的另一個jar文件

了試圖調用生成的Web服務客戶端時,該堆棧跟蹤:

 
17:23:21 12.05.2010  caused by: java.lang.NoClassDefFoundError: org/apache/axiom/om/OMNode 
17:23:21 12.05.2010  at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:96) 
17:23:21 12.05.2010  at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:79) 
17:23:21 12.05.2010  at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:615) 
17:23:21 12.05.2010  at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:115) 
17:23:21 12.05.2010  at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) 
17:23:21 12.05.2010  at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:180) 
17:23:21 12.05.2010  at org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(ClientConfigurationFactory.java:51) 
17:23:21 12.05.2010  at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:74) 
17:23:21 12.05.2010  at org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:67) 
17:23:21 12.05.2010  at org.apache.axis2.jaxws.spi.ServiceDelegate.(ServiceDelegate.java:84) 
17:23:21 12.05.2010  at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:45) 
17:23:21 12.05.2010  at javax.xml.ws.Service.(Service.java:56) 

回答

4

1/Tomcat不拿出一個默認的Web服務實現。 Axis2已放置在您部署在Tomcat中的webapp中,或直接放置在Tomcat lib目錄中。通常不建議使用第二個選項。

讓我們想象一下,您使用的是使用Axis2版本1.4的webapp1和使用Axis2版本1.5的webapp2。 1.4版本和1.5版本具有不同的依賴關係,所以如果您將依賴關係混合起來,那麼當Tomcat啓動時,您最終會遇到類加載錯誤。

詳情請參閱Tomcat documentation about class loading

2 /讓我們考慮您已將Axis2庫放入您在Tomcat中部署的webapp中。您可以使用Apache CXF或Sun JAX-WS RI代替Axis2。

如果您想使用Sun JAX-WS RI,請確保將所有庫和它們的所有依賴項放在您的web應用程序中。 Tomcat將使用他在webapp上下文中加載的實現。如果tomcat/lib具有Axis2庫,則可能會導致類加載問題(請參閱1)。

3/Axis2 1.5有一些依賴關係。看起來你的類路徑中缺少庫axiom-api-1.2.8.jar

+0

你能解釋一下爲什麼把axis2放到tomcat/lib沒有提示,2)*我應該直接放多少個jar來存放使用的war *讓我們說SUN JAX-WS RI?如果我把它們放入戰爭中,那麼儘管Tomcat不包含任何已安裝的JAX-WS環境,它仍將使用所需的實現嗎? – EugeneP 2010-05-12 16:36:06

+0

見編輯答案。 – rochb 2010-05-14 15:54:13

相關問題