在tomcat下的web应用程序中运行web服务jax-ws客户端

时间:2010-05-12 13:38:51

标签: java web-services jax-ws axis2

在我的案例中,所有服务类都扩展了javax.xml.ws.Service。

但真正的调用,因为我看到通过引擎盖下的第三方库工作。 在我的例子中,tomcat使用Axis2。

首先我应该问一下, Tomcat使用什么jar来运行网络服务

第二,有没有办法改变它们?

第三,这个例外是什么意思?它需要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)

1 个答案:

答案 0 :(得分: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,请确保将所有库及其所有依赖项放在webapp中。 Tomcat将使用他在webapp上下文中加载的实现。如果tomcat / lib具有Axis2库,则可能会产生类加载问题(参见1 /)。

3 / Axis2 1.5有一些依赖关系。您的类路径中似乎缺少库axiom-api-1.2.8.jar

相关问题