2010-05-12 46 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

相关问题