在Tomcat 6中部署的基于JAX-WS的Web服务没有WSDL

时间:2011-03-08 17:14:24

标签: tomcat deployment wsdl jax-ws

在我创建可以部署在glassfish和tomcat上的web服务的过程中,我注意到两个AS都会为WSDL提供不同的URL。 对于这篇文章末尾的附加代码,我有: Glassfish v3:localhost:8080 / TaxCalculator / TaxCalculatorService?wsdl Tomcat 6.23:localhost:8080 / TaxCalculator / TaxCalculator?wsdl 两者都使用soapUI工作正常,但我不希望这种AS依赖性暗示一些endPointUrl。

现在,我尝试根据信息I found here解决此问题。 但是,信息不符合Tomcat和GlassFish处理这些信息的方式。 所以这没有用,现在Tomcat不再生成WSDL了。 至少,我找不到使用预期的组合(在某处有概述吗?) Tomcat的记录不会引起任何问题。

是否有关于如何设置endpointUrl的适当文档,以便: - 在GlassFish,Tomcat和任何其他常用的AS上,endpointUrl的后半部分是相同的吗? - 设置端点URL而不对主机名进行硬编码。

或者有人看到我做错了吗? Web服务实现定义了endpointInterface,serviceName和portName。 (我使用JAX-WS注释在Java中定义了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 :(得分:0)

我想如果你改变了

<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