一、服務的開發
(開發框架很多 以cxf為例創建項目后 導入cxf的支持jar包)
①在web項目的資源文件夾src中建立格式如org.mike.ws的包
創建服務的接口類HelloWorld.java代碼如下
1 package org.mike.ws; 2 import javax.jws.WebService; 3 4 /** 5 * Web服務接口,第一個Web Service規范的發布版,HelloWorld 6 * 7 * @author Mike 8 * 9 */ 10 @WebService 11 public interface HelloWorld { 12 /** 13 * @param name 名字 14 * @return 歡迎參數指定的名字 15 */ 16 public String sayHi(String name); 17 18 }
②在src中建立如下格式如org.mike.ws.impl的包
創建服務的實現類HelloWorldImpl.java
1 package org.mike.ws.impl; 2 3 import org.mike.ws.HelloWorld; 4 import javax.jws.WebService; 5 6 /** 7 * Web服務接口,第一個web service規范的發布版,HelloWorld 8 * 9 * @author Mike 10 * 11 */ 12 @WebService(endpointInterface = "org.mike.ws.HelloWorld", 13 serviceName="HelloWorld") 14 public class HelloWorldImpl implements HelloWorld { 15 16 /** 17 * @param name 名字 18 * @return 歡迎參數指定的名字 19 */ 20 @Override 21 public String sayHi(String name) { 22 return "歡迎"+name; 23 } 24 25 }
③在org.mike.ws包中創建類WSServlet.java用於發布服務
1 package org.mike.ws; 2 import javax.servlet.ServletConfig; 3 import javax.xml.ws.Endpoint; 4 import org.apache.cxf.transport.servlet.CXFNonSpringServlet; 5 import org.mike.ws.impl.HelloWorldImpl; 6 /** 7 * @author Mike 8 * 9 */ 10 public class WSServlet extends CXFNonSpringServlet { 11 12 @Override 13 public void loadBus(ServletConfig servletConfig){ 14 super.loadBus(servletConfig); 15 //發布服務 16 Endpoint.publish("/HelloWorld", new HelloWorldImpl()); 17 18 } 19 }
④修改網站的配置文件WebContent->WEB-INF->web.xml添加類說明和映射目錄
添加代碼如下注意添加的位置
1 <servlet> 2 <servlet-name>WSServlet</servlet-name> 3 <servlet-class>org.mike.ws.WSServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>WSServlet</servlet-name> 7 <url-pattern>/ws/*</url-pattern> 8 <!--上面很重要 使之應用最后映射為/ws/HelloWorld--> 9 </servlet-mapping>
二、發布
將網站上傳至服務器假設發布地址為http://127.0.0.1
此時可檢驗應用是否同時發布http://127.0.0.1/ws/HelloWorld?wsdl
三、客戶端使用已發布的Web Service
說明:Web Service發布后是可以用任何語言訪問的
本例使用Java演示
①創建Java工程wsClientTest
導入Web Service支持類
打開命令行界面轉到本工程src目錄下 輸入命令wsimport -keep http://127.0.0.1/ws/HelloWorld?wsdl(該命令為jdk自帶)
src下邊生成了Web Service支持類
②src下創建包test 並在包下創建類myTest.java代碼如下
1 package HelloWorldTest; 2 3 import org.mike.ws.impl.*; 4 5 6 public class test { 7 public static void main(String[] args) { 8 HelloWorld_Service factory = new HelloWorld_Service(); 9 HelloWorld hw=factory.getHelloWorldImplPort(); 10 System.out.println(hw.sayHi("Mike")); 11 } 12 }
運行后可以看到控制台輸出了"歡迎Mike"
毫無疑問的 斷網后程序無法運行