在我的案例中,所有服务类都扩展了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)
答案 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
。