1. 程式人生 > >webservice學習筆記(六):使用CXF開發web service的服務端和客戶端以及WebService請求深入分析

webservice學習筆記(六):使用CXF開發web service的服務端和客戶端以及WebService請求深入分析

1.使用CXF開發web service

-加入cxf的jar包即可,其他不需要改動

 

a.建立一個java專案,把之前的jdk開發webservice服務端的程式碼複製進去,把cxf的jar複製到lib下面並build path,

注意cxf的lib下有一個不是jar包,不要選中

b.修改埠號並執行

c.執行jdk的websevice服務端

d.檢視兩者的wsdl文件

-首先檢視8989,也就是我們的jdk的webservice服務端,它的schema約束是從外部引入的:

 

而我們的8888埠,cxf的webservice服務端wsdl文件,它的schema約束檔案是內建的:

2.分析WebService的WSDL文件結構

大致可分為六個部分:

(1).<definitions>

(2).<types>

(3).<message>

(4).<portType>

(5).<binding>

(6).<service>

詳細結構如下:

 

 

文件結構:

<definitions>

              <types>

                            <schema>:引用了自己定義的一個約束

                                          <element>

              </types>

              <message>:定義了請求響應訊息的結構

                            <part>

              </message>

              <portType>:埠型別

                            <operation>

                                          <input>

                                          <output>

              </portType>

              <binding>:

                            <operation>

                                          <input>

                                          <output>

              </binding>

              <service>

              

              </service>

</definitions>

3.使用cxf的wsdl2java去生成客戶端程式碼

a.把cxf的bin目錄加入到環境變數path中

b.以管理員身份執行cmd視窗,進入客戶端專案src目錄輸入,wsdl2java命令加上你的服務端url(字尾加上?wsdl),或者你的本地wsdl文件位置即可生成客戶端程式碼,控制檯可能會報錯,原因是有多餘的包

c.編寫cxf測試類,由wsdl檔案的service標籤得知,我們可以例項化name為HelloWsImplService的工廠類,只要通過

getHelloWsPort()即可獲取其的方法,sayHello(String name)

 

d.下面我們使用eclipse內建web services explorer開啟wsdl page檢視我們的請求報文和響應報文

 

e.首先分析我們的8888埠號cxf的wsdl文件,根據其語法可以寫如下標籤:

 

f.sayHello標籤用於請求,sayHelloResponse用於響應

g.message標籤解析:

h.portType標籤解析:

 

 

i:binding標籤解析:

 

j:service標籤解析: