[英]JAX-WS multiple endpoints in sun-jaxws.xml
剛開始使用 JAX-WS。 我在一個 WAR 文件中創建了 2 個測試 web 服務,如下所示....
package com.djs;
import javax.jws.WebService;
@WebService()
public class AddTwoInts {
public int performAdd(int firstNum, int secondNum) {
return firstNum + secondNum;
}
}
和.....
package com.djs;
import javax.jws.WebService;
@WebService()
public class SayHello {
public String sayHello(String inwards) {
return "Hello " + inwards;
}
}
這是我的 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>jaxws</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jaxws</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
這是 sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>
<endpoint name='performAdd' implementation='com.djs.AddTwoInts' url-pattern='/AddTwoInts' />
<endpoint name='sayHello' implementation='com.djs.SayHello' url-pattern='/SayHello' />
</endpoints>
I deploy into Tomcat 7 and use http://localhost:8080/MyApp/AddTwoInts?wsdl
to get the WSDL for AddTwoInts OK.... But when I execute http://localhost:8080/MyApp/SayHello?wsdl
I get找不到 404 頁面錯誤....
任何建議表示贊賞。
戴夫,
我猜你錯過了你擁有的兩個端點的 servlet 映射。
將以下內容添加到您的 web.xml 並重試。 讓我知道這是否能解決問題。
<servlet>
<servlet-name>AddTwoInts</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddTwoInts</servlet-name>
<url-pattern>/AddTwoInts</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SayHello</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SayHello</servlet-name>
<url-pattern>/SayHello</url-pattern>
</servlet-mapping>
您希望 web.xml 在 urlMapping / 處僅引用一個 servlet:
<servlet>
<servlet-name>services</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>services</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
然后,在 sun-jaxws.xml 中的完整所需路徑中包含多個端點:
<endpoint name='performAdd' implementation='com.djs.AddTwoInts' url-pattern='/AddTwoInts' />
<endpoint name='sayHello' implementation='com.djs.SayHello' url-pattern='/couldhavemore/SayHello' />
請注意那里的“couldhavemore”...您可以添加到 sun-jaxws.xml 文件中的相關路徑以獲得所需的完整路徑。 I've gotten a single service to work with a web.xml entry of something other than /, but then you need a web.xml entry for every service. 您需要使用 / 然后將完整路徑放入 sun-jaxws.xml 中似乎需要多個工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.