服務端是一個Web Project,客戶端是一個Java Project
首先是服務端的SEI
?
package com.jadyer.service; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService(targetNamespace="http://blog.csdn.net/jadyer") public interface HelloService { @WebResult(name="sayHelloResult") public String sayHello(@WebParam(name="name")String name); }
下面是服務端的SIB
?
?
package com.jadyer.service; import javax.jws.WebService; @WebService(endpointInterface="com.jadyer.service.HelloService", targetNamespace="http://blog.csdn.net/jadyer") public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { System.out.println("Receive the name=[" + name + "]"); if(null==name){ return "Hello,World"; }else{ return "Hello," + name; } } }
下面是集成所需的//WebRoot//WEB-INF//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"> <!-- name:隨便起,在web.xml中配置Servlet時會用到它 --> <!-- implementation:對外開放WebServices接口的實現類 --> <!-- url-pattern:瀏覽器訪問后綴 --> <endpoint name="myJaxWsTomcatDemo" implementation="com.jadyer.service.HelloServiceImpl" url-pattern="/myHello"/> </endpoints> <!-- 將JAX-WS開發的WebServices服務端部署到Tomcat 步驟如下 1)在WEB-INF下創建sun-jaxws.xml 2)導入JAX-RI包 3)配置web.xml 4)啟動tomcat 補充如下 JAX-RI是一個用來幫助我們開發WebService的工具包,類似的工具包有很多,JAX-RI只是其中的一個 JAX-RI的官網為https://jax-ws.java.net,我下載到的最新版為JAXWS2.2.7-20120813.zip 以下參考維基百科 JAX-RI即JAX-WS的參考實現,它是作為一個開源項目開發的,是GlassFish項目的一部分,GlassFish是一個開源的JavaEE應用服務器 JAX-RI聲稱達到了生產質量的實現(以前的參考實現只不過是概念的驗證),該參考實現現在是Metro的一部分 -->
最后是//WebRoot//WEB-INF//web.xml
?
?
<?xml version="1.0" encoding="UTF-8"?> <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"> <listener> <!-- 固定值:使用jaxws-ri中的監聽器 --> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> <servlet> <!-- 該值必須與sun-jaxws.xml中定義的endpointName相同 --> <servlet-name>myJaxWsTomcatDemo</servlet-name> <!-- 固定值:使用jaxws-ri中的Servlet --> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myJaxWsTomcatDemo</servlet-name> <!-- 該值必須與sun-jaxws.xml中定義的url-pattern相同 --> <!-- Tomcat啟動成功后訪問路徑將為http://127.0.0.1:8088/webPath/myHello?wsdl --> <url-pattern>/myHello</url-pattern> </servlet-mapping> </web-app>
至此,服務端代碼示例完畢,下面是客戶端代碼
?
客戶端只有一個調用服務端的示例ClientApp.java
注意:具體的客戶端代碼由wsimport生成,詳見 http://blog.csdn.net/jadyer/article/details/8692108
?
package com.jadyer.client; import java.io.IOException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.SOAPException; import net.csdn.blog.jadyer.HelloService; import net.csdn.blog.jadyer.HelloServiceImplService; /** * wsimport -d D:/Download/ -keep -verbose http://127.0.0.1:8088/jaxws_tomcat/myHello?wsdl * @create May 31, 2013 7:49:51 PM * @author 玄玉<http://blog.csdn.net/jadyer> */ public class ClientApp { public static void main(String[] args) throws SOAPException, IOException { //服務端提供服務的端口是8088,如果使用Eclipse提供的TCP/IP Monitor,則此處需將8088改為TCP/IP Monitor監聽的本地端口 String wsdlLocation = "http://127.0.0.1:8088/jaxws_tomcat/myHello?wsdl"; //取自wsdl文件中定義的<wsdl:definitions targetNamespace=""/>的值 String nameSpace = "http://blog.csdn.net/jadyer"; //取自wsdl文件中定義的<wsdl:service name="">的值 String serviceName = "HelloServiceImplService"; HelloServiceImplService helloServiceImpl = new HelloServiceImplService(new URL(wsdlLocation), new QName(nameSpace, serviceName)); HelloService hello = helloServiceImpl.getHelloServiceImplPort(); System.out.println(hello.sayHello("玄玉")); } }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
