在我创建可以部署在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"/>
答案 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