程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> WebService教程詳解(二)

WebService教程詳解(二)

編輯:關於JAVA

WebService教程詳解(二)。本站提示廣大學習愛好者:(WebService教程詳解(二))文章只能為提供參考,不一定能成為您想要的結果。以下是WebService教程詳解(二)正文


在上篇文章給年夜家引見了WebService教程詳解(一)

應用對象的緣由:

1、 應用對象可以更好的懂得WebService要求的進程

2、 應用對象WsExplore可以獲得SOAP數據發送和吸收的格局

3、 應用對象Tcp/Ip Monitor可以監控攔阻器要求頭和呼應頭的詳細數據

甚麼是SOAP?

SOAP是一種基於XML編碼標准的文本協定,簡略的說SOAP就是在HTTP的基本上傳輸XML數據,以完成長途挪用【不管你的辦事端是甚麼說話書寫的,只需吸收SOAP協定的XML數據,並前往SOAP協定的XML數據,便可以被任何說話挪用】

應用WsExplorer實例:驗證qq能否在線

采取qqOnlineWebServiceSoap中的qqCheckOnLine驗證時,前往的是

qqCheckOnlineResponse
qqCheckOnlineResult (string): N

點擊source可以看到具體信息,信息以下:

1:這是收回的新聞格局:


http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://WebXml.com.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-
870931520

2:以下是吸收到的XML格局


http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
- http://WebXml.com.cn/">
N

采取qqOnlineWebServiceHttpGet或qqOnlineWebServiceHttpPost中的qqCheckOnline驗證時,前往的都是

Nhttp://WebXml.com.cn/">N>

應用Tcp/Ip Monitor

TCP/IP Monitor不只可以看到SOAP數據,還可以獲得HTTP要求和吸收的頭信息。

1、地位:此對象位於:window>show view>other>MyEclipse Common(經常使用對象)>TCP/IP Monitor

2、此對象,相當於一個署理商,啟動後它將監聽當地的某個端口,然後再將要求轉發給指定的目的IP和端口。
獲得到數據後,再將數據原封不動的前往給客戶。在客戶看來,永久起首拜訪的都應當是這個署理,不然我們將看不到數據傳輸的進程。

3、 設置裝備擺設選項:

在翻開的TCP/IP Monitor界面上:view Menu(右上偏向下的小箭頭)>Properties>Add(右邊添加)

設置成以部屬性:

第一步:

1)local monitoring port(監聽當地的端標語):9876,隨便設置一個4位的端標語,一會將經由過程http://127.0.0.1:9876的情勢拜訪

2)host name(要監聽的辦事器,如www.jb51.net):127.0.0.1 –由於本機宣布了一個WebService所以監聽本機IP.也能夠是隨意率性的主機。

3)Port(要監聽的目的辦事器的端口):6666 - 由於我們宣布的WebService為http://127.0.0.1:6666/helloworld所以,6666是須要監聽的端標語。

4)Type(監聽的類型):
-- TCP/IP : 將應用原始地址持續拜訪下一個要求,如用戶輸出:http://127.0.0.1:9876/helloworld?wsdl此時將前往wsdl辦事拜訪地址同前。

-- HTTP :將應用目的地址持續拜訪下一個要求。如用戶輸出: http://127.0.0.1:9876/helloworld?wsdl在要求辦法時將應用http://127.0.0.1:6666/helloworld來拜訪sayHi辦法。此種方法將不再會被署理。由於曾經不是正在監聽的端標語了。

在監聽類型處,我選擇了TCP/IP,然後經由過程在地址欄輸出:http://127.0.0.1:9876/helloworld?wsdl,在前往的wsdl文件中檢查:處地址的變更情形。

time out:設置拜訪不勝利的銜接時光,堅持為0,即不設置。

在設置好後,點OK按扭,然後再點右方的Start按扭,監聽便曾經啟動。

第二步:

在MyEclipse的WebService上設置裝備擺設WSDL URL為:http://127.0.0.1:9876/helloworld?wsdl,留意應用的是MyEclipse TCP/IP Monitor的端口。而不是直接去拜訪我們宣布的http://127.0.0.1:6666/helloworld?wsdl

若何修正wsdl文件的內容?

應用WebService的注解。

1、 @WebService-界說辦事

2、 @WebMethod-界說辦法

3、 @WebResult-界說前往值

4、@WebParam-界說參數

留意:關於注解,分歧的版本支撐水平不雷同:

1、1.5不支撐.

2、1.6.0_20前版本必需應用完全注解.

3、1.6.0_21今後可以只應用@WebService對類停止注解.

正文的感化:

經由過程WebService的注解,可以加倍形像的描寫Web辦事。從而生成WSDL文檔。

當修正了WebService注解以後,同時會影響客戶端生成的代碼。

挪用的辦法名和參數名也產生了變更。

示例:

@WebService(name="myName",//對應portType name="myName" 
portName="myPort", //對應辦事中的port name="myPort" 
serviceName="myService",//對應service name="myService" 
targetNamespace="http://leaf.com/mynamespace")//可以隨便書寫相似於java中的package 
public class HelloWorld{ 
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
@WebMethod(action="myAction",//界說一個soapAction="myAction"用於找到這個辦法以履行 
operationName="myOperationName")//界說可以挪用的辦法,會生成響應類的詳細辦法,operation name=".." 
public @WebResult(name="mySayHelloResult")String//界說前往值的稱號 
sayHello(){ 
return "HelloWorld"; 
} 
@WebMethod(action="mySayHiAction",operationName="mySayHiOperationName") 
public @WebResult(name="mySayHiResult")String sayHi(@WebParam(name="myParaName", 
//將參數放到頭信息中,用於掩護參數,默許在body中 
header=true, 
mode=Mode.IN) 
String name){ 
String str = "你好:"+name+",以後時光是:"+sdf.format(new Date()); 
return str; 
} 
public static void main(String[] args) { 
Endpoint.publish("http://127.0.0.1:6666/helloworld",new HelloWorld()); 
} 
}

3:將下面的法式對外宣布今後,我們經由過程MyEclipse的WebService Explorer來拜訪

你會發明和之前紛歧樣的提醒信息,但其實,依然照樣挪用的那統一個辦法。

4:再次應用wsimport –s . http://127.0.0.1:6666/helloworld?wsdl生成java代碼然後挪用
以下是挪用代碼(可以用面貌全非來描述,但完成的照樣異樣的任務。)

package com.leaf.mynamespace; 
public class Main { 
public static void main(String[] args) { 
//經由過程剖析wsdl可知從myService中挪用getMyPort前往myName 
MyName myName = new MyService().getMyPort(); 
//經由過程myName的mySayHiOperationName來挪用sayHi辦法 
String str = myName.mySayHiOperationName("王健"); 
System.err.println(str); 
} 
}

關於WebService教程詳解(二) 就先給年夜家引見到這裡,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved