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

WebService教程詳解(一)

編輯:關於JAVA

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


Web Services 可以將運用法式轉換為收集運用法式。

經由過程應用 Web Services,您的運用法式可以向全球宣布信息,或供給某項功效。

Web Services 可以被其他運用法式應用。

經由過程 Web Services,您的管帳部分的 Win 2k 辦事器可以與 IT 供給商的 UNIX 辦事器相銜接。

根本的 Web Services 平台是 XML+HTTP。

Web services 應用 XML 來編解碼數據,並應用 SOAP 來傳輸數據。

甚麼是webService

WebService,望文生義就是基於Web的辦事。它應用Web(HTTP)方法,吸收和呼應內部體系的某種要求。從而完成長途挪用.

1:從WebService的任務形式上懂得的話,它跟通俗的Web法式(好比ASP、JSP等)並沒有實質的差別,都是基於HTTP傳輸協定的法式。

2:WebService所應用的數據均是基於XML格局的。今朝尺度的WebService在數據格局上重要采取SOAP協定。SOAP協定現實上就是一種基於XML編碼標准的文本協定。

webService的技巧支撐

Web Service平台須要一套協定來完成散布式運用法式的創立。任何平台都有它的數據表現辦法和類型體系。要完成互操作性,Web Service平台必需供給一套尺度的類型體系,用於溝通分歧平台、編程說話和組件模子中的分歧類型體系。今朝這些協定有:

XML和XSD

  可擴大的標志說話XML 是Web Service平台中表現數據的根本格局。除易於樹立和易於剖析外,XML重要的長處在於它既與平台有關,又與廠商有關。XML是由萬維網協會(W3C)創立,W3C制訂的XML SchemaXSD 界說了一套尺度的數據類型,並給出了一種說話來擴大這套數據類型。

  Web Service平台是用XSD來作為數據類型體系的。當你用某種說話如VB. NET或C# 來結構一個Web Service時,為了相符Web Service尺度,一切你應用的數據類型都必需被轉換為XSD類型。如想讓它應用在分歧平台和分歧軟件的分歧組織間傳遞,還須要用某種器械將它包裝起來。這類器械就是一種協定,如 SOAP。

SOAP

  SOAP即簡略對象拜訪協定(Simple Object Access Protocal),它是用於交流XML編碼信息的輕量級協定。它有三個重要方面:XML-envelope為描寫信息內容和若何處置內容界說了框架,將法式對象編碼成為XML對象的規矩,履行長途進程挪用(RPC)的商定。SOAP可以運轉在任何其他傳輸協定上。例如,你可使用 SMTP,即因特網電子郵件協定來傳遞SOAP新聞,這可是很有引誘力的。在傳輸層之間的頭是分歧的,但XML有用負載堅持雷同。

  Web Service 願望完成分歧的體系之間可以或許用“軟件-軟件對話”的方法互相挪用,打破了軟件運用、網站和各類裝備之間的水乳交融的狀況,完成“基於Web無縫集成”的目的。

WSDL

  Web Service描寫說話WSDL 就是用機械能浏覽的方法供給的一個正式描寫文檔而基於XML的說話,用於描寫Web Service及其函數、參數和前往值。由於是基於XML的,所以WSDL既是機械可浏覽的,又是人可浏覽的。

UDDI

  UDDI 的目標是為電子商務樹立尺度;UDDI是一套基於Web的、散布式的、為Web Service供給的、信息注冊中間的完成尺度標准,同時也包括一組使企業能將本身供給的Web Service注冊,以使其余企業可以或許發明的拜訪協定的完成尺度。 挪用RPC與新聞傳遞

  Web Service自己實際上是在完成運用法式間的通訊。我們如今有兩種運用法式通訊的辦法:RPC長途進程挪用 和新聞傳遞。應用RPC的時刻,客戶真個概念是挪用辦事器上的長途進程,平日方法為實例化一個長途對象並挪用其辦法和屬性。RPC體系試圖到達一種地位上的通明性:辦事器裸露出長途對象的接口,而客戶端就似乎在當地應用的這些對象的接口一樣,如許就隱蔽了底層的信息,客戶端也就基本不須要曉得對象是在哪台機械上。

若何宣布一個WebService?

1、用Jdk1.6.0_21今後的版本宣布一個WebService辦事.並經由過程地址欄檢查它的wsdl文檔.

2、經由過程wsimport生成客戶端代碼,挪用並檢查運轉的成果.(學會若何挪用是我們的重點).

須要留意的是,jdk1.6._07今後jdk版本宣布WebService時必需要完全的對代碼停止注解,假如應用的是jdk1.6.0_21今後版本,由於它曾經內含了ws2.1所以,可以只對類添加@WebService的注解.

以下是兩段分歧的代碼:

在jdk1.6.0_13的版本上宣布的ws:

package com.itcast; 
import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.jws.soap.SOAPBinding; 
import javax.jws.soap.SOAPBinding.Style; 
import javax.xml.ws.Endpoint; 
@WebService(targetNamespace="http://loalhost:9999/helloworld") 
@SOAPBinding(style=Style.RPC)//只支撐RPC的新聞作風 
public class HelloWorld { 
//以下經由過程@WebMethod注解,對外地下辦法 
@WebMethod 
public String sayHello(){ 
return "HelloWorld"; 
} 
public static void main(String[] args) { 
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld()); 
} 
} 

2:以下是在jdk1.6.0_24上宣布的WebService代碼:

package com.itcast; 
import javax.jws.WebService; 
import javax.xml.ws.Endpoint; 
@WebService//留意只要此一個注解,此注解也是必需的,默許的SOAP新聞作風為:DOCUMENT 
public class HelloWorld { 
public String sayHello(){ 
return "HelloWorld"; 
} 
public static void main(String[] args) { 
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld()); 
} 
}

第一個WebService辦事

package com.itcast; 
import javax.jws.WebService; 
import javax.xml.ws.Endpoint; 
/** 
* 第一個WebService辦事運用 
*/ 
//經由過程注解,標明此類宣布為一個WebService 
@WebService 
public class HelloWorld { 
public String sayHello(){ 
return "Hello World"; 
} 
//在main辦法中,應用javax.xml.ws.Endpoint端點宣布一個運用 
public static void main(String[] args) { 
Endpoint.publish("http://127.0.0.1:9999/helloworld", 
new HelloWorld()); 
} 
}

代碼解釋:HelloWorld類的一切非靜態地下辦法將對內部裸露.

Wsimport對象解釋:

 wsimport是jdk自帶的,可以依據wsdl文檔生成客戶端挪用代碼的對象.固然,不管辦事器真個WebService是用甚麼說話寫的,都將在客戶端生成Java代碼.辦事器端用甚麼寫的其實不主要.

 wsimport.exe位於JAVA_HOME\bin目次下.

 經常使用參數為:

• -d<目次> - 將生成.class文件。默許參數。

• -s<目次> - 將生成.java文件。

• -p<生成的新包名> -將生成的類,放於指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必需的參數

應用:

1:可以經由過程java –version檢討你以後的版本號.假如版本太低可以裝置高版本的jdk.

或直接將他人已裝置好的jdk目次拷貝到你的機械如D:\jdk1.6.0_24目次下.

由於之前的情況變量曾經設置成之前老版本的jdk目次,即JAVA_HOME和PATH兩個情況變量.

可以再從新設置一下情況變量為:JAVA_HOME=D:\jdk1.6.0_24,path=%JAVA_HOME%\bin,

從新設置了情況變量後,要從新翻開一個doc(敕令行)窗口.才失效.

假如不想修正本來曾經設置裝備擺設好的情況變量,可以敕令行窗口輸出以下敕令,使jdk1.6.0_24失效:

set path = D:\jdk1.6.0_24\bin;%PATH%(回車便可)

再經由過程java –version檢查jdk的版本號能否曾經產生變更.

2:轉到一個絕對清潔的目次下,我在d盤上新樹立一個目次名為:ws,並轉到此目次下.

3:開啟你的webService.

4:輸出以下敕令:

wsimport –s . http://127.0.0.1:9999/helloworld?wsdl

參數解釋:-s是指編譯出源代碼文件,前面的.(點)指將代碼放到當前目錄下.

最初面的http….是指獲得wsdl解釋書的地址.

5:此時,將生成.java文件和.class文件.(都包括原始包名).將代碼Copy到你的項目中.(只拷貝java文件)

6:在新的項目中,新一個類,(可位於隨意率性包下),對下面生成的代碼停止挪用,見下一頁ppt.

7:wsimport其他參數解釋,我們常常應用的參數為-d,-s,-p

-d<目次>將會生成.class文件.

示例:wsimport –d . http://127.0.0.1:9999/helloworld?wsdl

-s<目次>將會生成.java文件.

示例:wsimport –s . http://127.0.0.1:9999/helloworld?wsdl

-p<包名>將生成的文件(.java或是.class修正成指定的包名)

示例:wsimport -s . -p com.beijing.itcast http://127.0.0.1:9999/helloworld?wsdl

關於-p參數,留意包名的修正,它將所生成類,全體置於經由過程-p指定的包下.(演示)

須要解釋的是,當僅應用-p參數時,它也將同時應用-d即編譯成.class文件. –d參數寫或不寫,它都在那邊,不離不棄.

RunMain.java的源代碼以下:

package com.leaf; 
import com.itcast.HelloWorld; 
import com.itcast.HelloWorldService; 
/** 
* 經由過程挪用生成的類,來挪用長途代碼 
*/ 
public class RunMain { 
public static void main(String[] args) { 
//從HelloWorldSerice的getHelloWorldPort辦法中前往挪用接口 
HelloWorld helloWorld = 
new HelloWorldService().getHelloWorldPort(); 
String str = helloWorld.sayHello(); //履行挪用 
System.err.println(str);//前往HelloWorld字符串 
} 
} 

WebService與通俗Web法式的差別

1、 WebService只采取HTTP POST方法傳輸數據,不應用GET方法;

1) Tttp post的contentType為

(1)application/x-www-form-urlencoded

2) WebService的contentType為

(2) Text/xml soap1.1
(3) application/soap+xml –soap1.2

2、WebService從數據傳輸格局上作了限制。

WebService所應用的數據均是基於XML格局的。今朝尺度的WebService在數據格局上重要采取SOAP協定。SOAP協定現實上就是一種基於XML編碼標准的文本協定。

WebService和web辦事器的差別:

我們可以把WebService看做是Web辦事器上運用;反過去說,Web辦事器是WebService運轉時所必須的容器。這就是它們的差別和接洽。

WebService的特色:

1、 WebService經由過程HTTP POST方法接收客戶的要求

2、 WebService與客戶端之間普通應用SOAP協定傳輸XML數據.

3、它自己就是為了跨平台或跨說話而設計的。

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