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標籤解析: