Java 在tomcat下的web应用程序中运行webservice jax ws客户端

Java 在tomcat下的web应用程序中运行webservice jax ws客户端,java,web-services,jax-ws,axis2,Java,Web Services,Jax Ws,Axis2,在我的例子中,所有服务类都扩展了javax.xml.ws.service 但在我看来,真正的调用是通过隐藏的第三方库实现的。 在我的例子中,tomcat使用Axis2 首先我应该问,Tomcat使用什么JAR来运行web服务 第二,有没有办法改变它们 第三,这个例外意味着什么?它需要Tomcat/lib目录中的另一个jar文件吗 尝试调用生成的web服务客户端时获取此堆栈跟踪: 17:23:21 12.05.2010 caused by: java.lang.NoClassDef

在我的例子中,所有服务类都扩展了javax.xml.ws.service

但在我看来,真正的调用是通过隐藏的第三方库实现的。 在我的例子中,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) 17:23:21 12.05.2010原因:java.lang.NoClassDefFoundError:org/apache/axiom/om/OMNode 17:23:21 2010年5月12日,org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:96) 17:23:21 2010年5月12日,org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:79) 17:23:21 2010年5月12日,org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:615) 17:23:21 12.05.2010,网址为org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:115) 17:23:21 2010年5月12日,org.apache.axis2.context.ConfigurationContextFactory.CreateConfiurationContext(ConfigurationContextFactory.java:64) 17:23:21 2010年5月12日,org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:180) 17:23:21 2010年5月12日,org.apache.axis2.jaxws.ClientConfigurationFactory.getClientConfigurationContext(ClientConfigurationFactory.java:51) 17:23:21 2010年5月12日,org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:74) 17:23:21 12.05.2010,org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:67) 2010年5月12日17:23:21,org.apache.axis2.jaxws.spi.ServiceDelegate。(ServiceDelegate.java:84) 17:23:21 2010年5月12日,org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:45) 17:23:21 2010年5月12日,javax.xml.ws.Service。(Service.java:56)
1/Tomcat没有默认的Web服务实现。Axis2已经放置在您在Tomcat中部署的webapp中,或者直接放置在Tomcat lib目录中。一般不建议采用第二种方案

假设您有使用Axis2 1.4版的webapp1和使用Axis2 1.5版的webapp2。版本1.4和1.5具有不同的依赖关系,因此,如果混淆了依赖关系,则在Tomcat启动时将出现类加载错误

有关更多详细信息,请参阅

2 /让我们考虑你把AxIS2库放在你在Tomcat中部署的WebApp中。您可以使用ApacheCXF或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

您能解释1)为什么不建议将axis2放在tomcat/lib中,2)我应该直接将多少jar放在war归档中使用,比如说SUN JAX-WS RI?如果我将它们投入到战争中,尽管Tomcat不包含任何已安装的JAX-WS环境,但它还是会使用所需的实现吗?