最近學習cxf+spring發佈webservice服務,但是遇到服務發佈成功,查看其wsdl文件的時候卻缺少<wsdl:import>和<wsdl:message>標籤,查看代碼確實沒什麼問題,因爲用來測試,代碼比較簡單,但就是不出現以上兩個標籤。百度谷歌到處找原因找不到。失望……
還是自己好好動手解決問題吧。
認真看發佈後的wsdl文件,發現多了<wsdl:import>標籤(<wsdl:importlocation="http://localhost:8080/cxf-Spring-server/Hello?wsdl=HelloWorld.wsdl" namespace="http://dao.testCxfSpring.spg.com/"></wsdl:import>),將<wsdl:import>標籤中的location拿出去在瀏覽器中打開,裏面是“丟失”的兩個標籤,這時候就發現其實並不是丟失了,而是包含在了<wsdl:import>標籤內
爲什麼會包含在了<wsdl:import>標籤內?再研究,發現<wsdl:definitions>標籤內的targetNamespace屬性和<wsdl:import>中namespace屬性的值不同,發現原因所在
最終解決方案
1,將接口類和實現類放在同一個包下,問題即可解決
2,將接口類和實現類中的註解中加入命名空間屬性配置,@WebService(targetNamespace="XXXXX"),兩個配置成一樣