WebService是一種跨編程語言和跨操做系統平臺的遠程調用技術。java
所謂跨編程語言和跨操做平臺,就是說服務端程序採用java編寫,客戶端程序則能夠採用其餘編程語言編寫,反之亦然!跨操做系統平臺則是指服務端程序和客戶端程序能夠在不一樣的操做系統上運行。web
所謂遠程調用,就是一臺計算機a上的一個程序能夠調用到另一臺計算機b上的一個對象的方法,譬如,銀聯提供給商場的pos刷卡系統,商場的POS機轉帳調用的轉帳方法的代碼實際上是跑在銀行服務器上。編程
要學會使用第三方服務,好比調用天氣等。瀏覽器
進入網站 http:// www.webxml.com.cn 進入對應的服務頁面,如天氣:服務器
而後點擊 "服務說明" 獲得以下頁面:編程語言
而後下載該頁面,以後使用命令 "wsomport -s . 文件的路徑" 解析該文件獲得源代碼,以後把源碼拷項目中便可使用。網站
下載的文件以下:WeatherWS.asmx.xmlspa
解析:G:\webservice>wsimport -s . G:\webservice\WeatherWS.asmx.xml 獲得源碼以下:操作系統
使用:.net
public class Cilent {
public static void main(String[] args) {
WeatherWS ws = new WeatherWS();
WeatherWSSoap soap = ws.getWeatherWSSoap();
ArrayOfString as = soap.getWeather("哈爾濱", null);
List<String> list = as.getString();
for(String str : list){
System.out.println(str);
}
}
}
咱們本身能夠發佈服務
本身發佈一個服務:
新建一個項目:
---------------------------------------------
import javax.jws.WebService;
public interface MyService {
public String sayHiTo(String name);
public int add(int a, int b);
}
-----------------------------------------------------
@WebService(endpointInterface="com.myservice.service.MyService")
public class MyServiceImpl implements MyService{
public String sayHiTo(String name) {
return "您好:" + name;
}
public int add(int a, int b) {
return a + b;
}
}
-----------------------------------------------------------
發佈:
public class Main {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9001/com.myservice.service/MyService",
new MyServiceImpl());
System.out.println("發佈完畢...");
}
}
--------------------------------------
以後在瀏覽器中輸入:
http://localhost:9001/com.myservice.service/MyService?wsdl
便可看到咱們發佈的服務說明
接下來要使用咱們發佈的服務:
方式一:
使用 wsimport -s 命令直接解析到咱們的新項目中:
wsimport -s G:/workSpace/webservice-myservice-cilent/src/ -p com.myservice.service -keep -verbose http://localhost:9001/com.myservice.service/MyService?wsdl
格式:wsimport -s 項目src -p 完成包名 -keep -verbose(顯示解析的詳細信息,可省略) 發佈的地址
方式二:
把上述服務說明頁面下載下來,以後使用 wsimport -s . 解析它獲得源碼,拷貝到項目中便可使用
wsimport -s . G:\webservice\MyService.xml 獲得源碼:
以後就可使用了:
@WebService 註解的屬性:
name : WebService 的名稱。映射到 WSDL 文件中的<wsdl:portType> 元素默認值爲 JWS 文件中 Java 類的非限定名稱。
targetNamespac : 用於今後 WebService 生成的 WSDL 和 XML 元素的 XML 名稱空間。默認值由 JAX-RPC specification 指定。
serviceName : WebService 的服務名。映射到 WSDL 文件中的 <wsdl:service> 元素。
默認值爲 JWS 文件中 Java 類的非限定名稱,後面加上字符串 Service。
portName : 如上圖
wsdlLocation : 預約義 WSDL 文件的相對或絕對 URL。若是指定此特性,則當 JWS 文件與 WSDL 文件中的端口類型和綁定不一致時,jwsc Ant 任務不生成 WSDL 文件,而且會返回錯誤。
endpointInterface : 現有服務端點實現的接口文件的全限定名稱。若是指定此特性,則假設您已經建立了該端點接口文件,而且該文件位於 CLASSPATH 中。