запустить клиент веб-сервиса jax-ws в веб-приложении под tomcat - PullRequest
3 голосов
/ 12 мая 2010

Все классы обслуживания в моем случае расширяют javax.xml.ws.Service.

Но настоящие вызовы, как я вижу, работают через сторонние библиотеки. В моем случае Tomcat использует Axis2.

Сначала я должен спросить, какие банки использует Tomcat для запуска веб-службы ?

Во-вторых, есть ли способ изменить их?

В-третьих, что означает это исключение? Ему нужен еще один jar-файл в каталоге Tomcat / lib ?

получил эту трассировку стека при попытке вызвать сгенерированный клиент веб-службы:

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 Ответ

4 голосов
/ 12 мая 2010

1 / Tomcat не поставляется с реализацией веб-службы по умолчанию. Axis2 размещен либо в веб-приложении, которое вы развернули в Tomcat, либо непосредственно в каталоге lib Tomcat. Этот второй вариант обычно не предлагается.

Давайте представим, что у вас есть webapp1, который использует Axis2 версии 1.4, и webapp2, который использует Axis2 версии 1.5. Версии 1.4 и 1.5 имеют разные зависимости, так что при загрузке Tomcat вы получите ошибки загрузки классов, если смешаете зависимости.

Более подробную информацию см. В документации Tomcat о загрузке классов .

2 / Давайте рассмотрим, как вы разместили библиотеки Axis2 в веб-приложении, которое вы развернули в Tomcat. Вы можете использовать Apache CXF или Sun JAX-WS RI вместо Axis2.

Если вы хотите использовать Sun JAX-WS RI, убедитесь, что вы разместили все библиотеки и все их зависимости в своем веб-приложении. Tomcat будет использовать реализацию, которую он загружает в контексте веб-приложения. Если в tomcat / lib есть библиотеки Axis2, это может вызвать проблемы с загрузкой классов (см. 1 /).

3 / Axis2 1.5 имеет некоторые зависимости. Кажется, библиотека axiom-api-1.2.8.jar отсутствует в вашем пути к классам.

...