В Tomcat 6 не развернут WSDL для веб-службы на основе JAX-WS - PullRequest
2 голосов
/ 08 марта 2011

Стремясь создать веб-сервис, который можно развернуть на glassfish и tomcat, я заметил, что обе AS будут давать разные URL-адреса WSDL.Для прикрепленного кода в конце этого поста у меня было: Glassfish v3: localhost: 8080 / TaxCalculator / TaxCalculatorService? Wsdl Tomcat 6.23: localhost: 8080 / TaxCalculator / TaxCalculator? Wsdl Оба работали нормально, используя soapUI, но я не хочуКак зависимость, которая подразумевает некоторый endPointUrl.

Теперь я попытался исправить это на основе информации , которую я нашел здесь .Тем не менее, информация не соответствовала тому, как Tomcat и GlassFish работают с этой информацией.Так что это не помогло, и теперь Tomcat больше не генерирует WSDL.По крайней мере, я не смог найти его, используя ожидаемую комбинацию (есть ли где-нибудь обзор?) Ведение журнала Tomcat не выявляет никаких проблем.

Есть ли какая-либо надлежащая документация о том, как установить endpointUrl так, чтобы:- Последняя часть endpointUrl будет одинаковой как для GlassFish, Tomcat, так и для любых других обычно используемых AS?- Установка URL-адреса конечной точки без жесткого кодирования имени хоста.

Или кто-нибудь видит, что я делаю неправильно?Реализация веб-сервиса определяет endpointInterface, serviceName и portName.(Я определил WS в Java, используя аннотации JAX-WS).

Ниже конфигураций xml:

web.xml: <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>TaxCalculator</display-name>
<!-- Tomcat workaround -->
<listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
    <servlet-name>TaxCalculatorService</servlet-name>
    <!-- Tomcat workaround -->
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>TaxCalculatorService</servlet-name>
    <url-pattern>/TaxCalculator</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

sun-jaxws.xml: <endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">

content.xml: <Context antiJARLocking="true" path="/TaxCalculator"/>

1 Ответ

0 голосов
/ 18 мая 2011

Я думаю, что если вы измените

<servlet-mapping>
    <servlet-name>TaxCalculatorService</servlet-name>
    <url-pattern>/TaxCalculator</url-pattern>
</servlet-mapping>

до

<servlet-mapping>
    <servlet-name>TaxCalculatorService</servlet-name>
    <url-pattern>/TaxCalculatorService</url-pattern> <!-- changed -->
</servlet-mapping>

тогда tomcat создаст URL: localhost: 8080 / TaxCalculator / TaxCalculatorService? Wsdl

...