激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - WebService教程詳解(一)

WebService教程詳解(一)

2020-04-10 15:21mrr JAVA教程

WebService,顧名思義就是基于Web的服務。它使用Web(HTTP)方式,接收和響應外部系統的某種請求,接下來通過本文給大家介紹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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
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服務

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的源代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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、它本身就是為了跨平臺或跨語言而設計的。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人久久18免费 | 中文字幕在线播放视频 | 国产成人在线网址 | 色毛片 | 玩偶姐姐在线观看免费 | 成人青青草 | 中文字幕在线观看网址 | 久久久久一区 | 又黄又爽免费无遮挡在线观看 | a视频网站 | 日韩黄色免费电影 | 国产1区2区在线 | 国产在线a | 日韩视频在线观看免费 | 久久久久免费精品国产小说色大师 | 国外成人在线视频 | 久久影院在线观看 | 亚洲一区二区三区在线看 | 丰满年轻岳中文字幕一区二区 | 精品人伦一区二区三区蜜桃网站 | a免费毛片| 情侣啪啪网站 | 好吊一区二区三区 | 日本高清在线播放 | 久久91精品国产91久久yfo | 亚洲精品欧美一区二区三区 | 免费观看黄色影片 | 成人欧美视频 | 久久精品视频一区二区三区 | 精品国产精品久久 | 亚洲国产精品久久久久久久久久 | 亚洲成人综合网站 | 精品久久久久久中文字幕 | 欧洲黄视频 | 免费网站看毛片 | 巨乳激情 | 国产91一区二区三区 | 99国内精品视频 | 日韩中文一区 | 高清在线观看av | 国产免费网站视频 |