場景描述
最近在和一家公司做業務接口對接,由他們那邊回調我們這邊,對方直接扔過來一個webservice的wsdl文件,讓我們按照他們的規范來做webservice服務,
大多數的對接應該是我們創建完服務端的webservice服務,讓其他公司根據我們的wsdl文件去開發客戶端,但是,大公司就是這樣,必須要按照他們的規范來。
那問題來了,怎么根據wsdl文件創建服務端呢?
查看wsdl文件的順序是從下往上
請大家銘記查看wsdl文件的順序是從下往上看的,不然,你會看懵逼的。
第一步:確定接口的名稱
service節點上的name屬性值就是這個接口類的名稱;
也就是說如果你要根據wsdl文件創建服務端的話就需要你去創建一個名字為:IHelloWord的接口。
第二步:確定接口中都有哪些方法以及方法的名稱
找binding節點下的operation子節點中的name屬性值
一個operation節點就代碼一個方法,也就是在接口中聲明幾個方法。
第三步:確定接口中方法的參數類型,順序
假設我要找sayHello方法的參數類型和順序;
1:找出binding節點對應的porttype節點
2:找出porttype中每一個operation中的input和output對應的message
3:找到message中對應
從上面圈住的部分可以看出來:
sayHello方法有兩個參數,第一個參數的類型為String,第二個參數的類型為int。
可以對比一下接口中的方法:
第四步:找出這個服務類中方法的返回值類型
1:找出這個方法所在的porttype節點
2:找出這個porttype中operation中的output指向的message節點
3:找到tyeps節點下name屬性值為sayHelloResponse的element節點
從上圖中圈住的部分就可以看出,這個返回值為String類。
對比java代碼;
第五步:確定對外提供服務的url地址
service中的address節點中有一個location的地址就是對外提供調用的地址
這里的url的第一級目錄和二級目錄會影響我們的配置;
一級目錄影響的是:web.xml中監聽器的匹配規則
二級目錄影響的是:注冊webservice服務的時候指定的名稱