eclipse下開發簡單的Java Web Service
阿新 • • 發佈:2018-12-31
service部分
在eclipse下新建一個動態web專案
在專案中新建一個service類
編寫SayHello類的程式碼
package org.sunny.service; //包不要引用錯了 import javax.jws.WebService; import javax.xml.ws.Endpoint; //註解@WebService不能少 @WebService public class SayHello { //該方法為客戶端呼叫的方法,方法名任意 public String say(String name){ return "Hello " + name + " , this is SayHelloService !" ; } public static void main(String[] args) { //第一個引數是訪問時的url,9091是任意一個不佔用的埠 Endpoint.publish("http://localhost:9091/Service/SayHello", new SayHello()); System.out.println("service success !"); } }
進行測試:對任意空白處右鍵
或者
執行後將會呼叫類中的main方法
執行結果出現如下配置則表示釋出成功
訪問網頁:http://localhost:9091/Service/SayHello?wsdl
注意:‘?wsdl’是必須要新增的。
出現如下頁面表示釋出成功
client部分
新建客戶端類
當然,你也可以新建一個web專案來編寫客戶端程式碼,本次client可service放在同一個專案下
開啟命令列:win+R開啟執行,輸入cmd
輸入以下命令
wsimport -s E:\SunnyWen\Data\Java_web\WebServiceDemo\src -p org.sunny.client.config -keep http://localhost:9091/Service/SayHello?wsdl
-s 後面的是你專案src所在的路徑
-p 後面的是你通過該命令生成的類所在的包
-keep 表示匯出webservice的class檔案時是否也匯出原始碼java檔案.
-verbose表示詳細資訊。
-d 表示輸出的目錄,目錄必須事先存在,否則匯出失敗。
在JDK的bin資料夾中,有一個wsimport.exe,這個工具依據wsdl檔案生成相應的類檔案,用這些類檔案,就可以像呼叫本地的類一樣呼叫WebService提供的方法。該工具可以用於非Java的伺服器,如:用C#編寫的WebService,通過wsimport則生成Java的客戶端實現。
對client類進行程式碼編寫
package org.sunny.client; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; //包別導錯了 import javax.xml.ws.WebServiceClient; //匯入兩個命令生成的類 import org.sunny.client.config.SayHello; import org.sunny.client.config.SayHelloService; //註解@WebServiceClient需要加入 @WebServiceClient public class ClientToSay { public static void main(String[] args) { // 方法一 /*try { // 服務WSDL Document的地址 URL url = new URL("http://localhost:9091/Service/SayHello?wsdl"); // 1.Qnameqname是qualified name 的簡寫 // 2.構成:由名字空間(namespace)字首(prefix)以及冒號(:),還有一個元素名稱構成 // 由package-info.java檔案可知namespace為http://service.sunny.org/, QName qname = new QName("http://service.sunny.org/", "SayHelloService"); Service service = Service.create(url, qname); SayHello sayHello = service.getPort(SayHello.class); String result = sayHello.say("Sunny01"); System.out.println(result); } catch (Exception e) { e.printStackTrace(); }*/ // 方法二 //通過SayHelloService的getSayHelloPort()方法的奧SayHello介面 SayHello sayHello = new SayHelloService().getSayHelloPort(); //呼叫SayHello介面的say方法 String result = sayHello.say("Sunny02"); //輸出返回內容 System.out.println(result); } }
執行為java application程式,輸出結果