利用XFire開發(fā)一個簡單的WebService
Posted on 2006-12-03 17:08 風(fēng)太少 閱讀(1087) 評論(0) 編輯 收藏 所屬分類: java編程 、spring首先打開Eclipse,創(chuàng)建一個普通的java工程,將xfire所需的jar和xfire的jar加入到工程所需的類庫引用中。創(chuàng)建一個簡單的java文件,這個java文件簡單到只提供一個add方法。
版本:xfire-all-1.1.2.jar
web.xml

?2

?3

?4

?5

?6

?7

?8

?9

10

11

還有映射,也是web.xml

2

3

4

5

6

7

8


9

然后在WEB-INF下新增一個文件
xfire-servlet.xml

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

?????????????????? <ref?bean="xfire"/>
????????? </property>
就這么寫,不用想別的,而
?????????? <property?name="serviceBean">


需要調(diào)用你自己的實現(xiàn)類bean的聲明。我的是:

接口:

?2

?3


?4

?5

?6

?7

?8

?9

10

11

12



13

14

15

16


?2

?3

?4

?5


?6

?7

?8

?9

10

11

12

13

14



15

16

17

18



19

20

21

22

23

24


?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

Web服務(wù)定義語言(Web Services Definition Language,WSDL)是一個建議性標(biāo)準(zhǔn),用于描 述Web服務(wù)的技術(shù)調(diào)用語法。WSDL定義了一套基于 XML的語法,將Web服務(wù)描述為能夠進(jìn)行消息交換的服務(wù)訪問點的集合,從而滿足了這種需求。WSDL服務(wù)定義為分布式系統(tǒng)提供了可機(jī)器識別的SDK文檔,并且可用于描述自動執(zhí)行應(yīng)用程序通信中所涉及的細(xì)節(jié)。WSDL的當(dāng)前版本是1.1,規(guī)范可以從http://www.w3.org/TR/wsdl獲得。
WSDL就是描述XMLWeb服務(wù)的標(biāo)準(zhǔn)XML格式,WSDL由Ariba、Intel、IBM和微軟等開發(fā)商提出。它用一種和具體語言無關(guān)的抽象方式定義了給定Web服務(wù)收發(fā)的有關(guān)操作和消息。就其定義來說,你還不能把WSDL當(dāng)作一種對象接 口定義語言,例如,CORBA或COM等應(yīng)用程序體系結(jié)構(gòu)就會用到對象接口定義語言。 WSDL保持協(xié)議中立,但它確實內(nèi)建了綁定SOAP的支持,從而同SOAP建立了不可分割的聯(lián)系。
WSDL服務(wù)描述是一個XML文檔,它與WSDL模式(schema)的定義一致。WSDL文檔并不是完整的服務(wù)描述,而只包括了服務(wù)描述任務(wù)的較低層次,即:服務(wù)接口的原始技術(shù)描述。WSDL是Web服務(wù)的接口定義語言IDL(Interface Definition Language,),本質(zhì)上,WSDL描述說明的是Web服務(wù)的以下三個基本屬性:
服務(wù)做些什么--服務(wù)所提供的操作(方法)。
如何訪問服務(wù)--數(shù)據(jù)格式詳情以及訪問服務(wù)操作的必要協(xié)議。
服務(wù)位于何處--由特定協(xié)議決定的網(wǎng)絡(luò)地址,如URL。
1、WSDL信息模型
WSDL信息模型充分利用了抽象規(guī)范與規(guī)范具體實現(xiàn)的分離,也就是分離了服務(wù)接口定義(抽象接口)與服務(wù)實現(xiàn)定義(具體端點)。 抽象接口規(guī)范描述了終端的處理能力,它在WSDL中表示為portType。束定機(jī)制 (binding mechanism)在WSDL中表示為binding元素,它使用特定的通信協(xié)議、數(shù)據(jù)編碼模型和底層通信協(xié)議,將Web服務(wù)的抽象定義映射至特定實現(xiàn)。若束定結(jié)合了實現(xiàn)的訪問地址,抽象端點也就成為可供服務(wù)請求者調(diào)用的具體端點(concrete endpoint),WSDL的port元素表示了這一結(jié)合。
抽象接口可以支持任何數(shù)量的操作(operations)。操作是由一組消息(messages)定義,消息定義了操作的交互定式。與抽象的消息、操作概念相對應(yīng)的具體實現(xiàn)是由binding元素指定。與XML應(yīng)用相同,WSDL模式定義了幾個高層元素,或稱為主要元素。在WSDL中,Web服務(wù)描述中的主要元素如下:
Types,定義了Web服務(wù)使用的所有數(shù)據(jù)類型集合,可被元素的各消息部件所引用。它使用某種類型系統(tǒng)(一般地使用XMLSchema中的類型系統(tǒng))。
Message,通信消息數(shù)據(jù)結(jié)構(gòu)的抽象類型化定義。使用Types所定義的類型來定義整個消息的數(shù)據(jù)結(jié)構(gòu)。
Operation,對服務(wù)中所支持操作的抽象描述。一般單個Operation描述了一個訪問入口的請求/響應(yīng)消息對。
PortType,對于某個訪問入口點類型所支持操作的抽象集合。這些操作可以由一個或多個服務(wù)訪問點來支持。
Binding,包含了如何將抽象接口的元素(portType)轉(zhuǎn)變?yōu)榫唧w表示的細(xì)節(jié),具體表示也就是指特定的數(shù)據(jù)格式和協(xié)議的結(jié)合;特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定。
Port,定義為協(xié)議/數(shù)據(jù)格式綁定與具體Web訪問地址組合的單個服務(wù)訪問點。
Service,這是一個粗糙命名的元素,代表端口的集合;相關(guān)服務(wù)訪問點的集合。
因此,portType(與message和type元素的細(xì)節(jié)相結(jié)合)描述了Web服務(wù)是什么,binding元素描述了如何使用Web服務(wù),port及service元素描述了Web服務(wù)的位置。
2、WSDL對象結(jié)構(gòu)圖
從圖2所示的WSDL對象結(jié)構(gòu)圖可知,一個WSDL文檔中可以包含一個Types,多個Message、PortType、Binding和Service。
?
其中,Types是一個數(shù)據(jù)類型定義的容器,包含了所有在消息定義中需要的XML元素的類型定義。
Message具體定義了在通信中使用的消息的數(shù)據(jù)結(jié)構(gòu),Message元素包含了一組Part元素,每個Part元素都是最終消息的一個組成部分,每個Part都會引用一個DataType來表示它的結(jié)構(gòu)。Part元素不支持嵌套(可以使用DataType來完成這方面的需要),都是并列出現(xiàn)。
PortType具體定義了一種服務(wù)訪問入口的類型(傳入/傳出消息的模式及其格式),一個PortType可以包含若干個Operation,而一個Operation則是指訪問入口支持的一種類型的調(diào)用。在WSDL里面支持四種訪問入口調(diào)用的模式:1) 單請求; 2) 單響應(yīng); 3) 請求/響應(yīng); 4) 響應(yīng)/請求。在這里請求指的是從客戶端到Web服務(wù)端,而響應(yīng)指的是從Web服務(wù)端到客戶端。PortType的定義中會引用消息定義部分的一個到兩個消息,作為請求或響應(yīng)消息的格式。
Service描述的是一個具體的被部署的Web服務(wù)所提供的所有訪問入口的部署細(xì)節(jié),一個Service往往會包含多個服務(wù)訪問入口,而每個訪問入口都會使用一個Port元素來描述。
Port描述的是一個服務(wù)訪問入口的部署細(xì)節(jié),包括通過哪個Web地址(URL)來訪問,應(yīng)當(dāng)使用怎樣的消息調(diào)用模式來訪問等。其中消息調(diào)用模式則是使用Binding結(jié)構(gòu)來表示。
Binding結(jié)構(gòu)定義了某個PortType與某一種具體的網(wǎng)絡(luò)傳輸協(xié)議或消息傳輸協(xié)議相綁定,從這一層次開始,描述的內(nèi)容就與具體服務(wù)的部署相關(guān)了。比如可以將PortType與SOAP/HTTP綁定,也可以將PortType與MIME/SMTP相綁定等。
?