我正在嘗試創建一些可以爲公司思科手機增添一點功能的寧靜web服務。基本思想很簡單,用戶可以獲得一個小型客戶端,他們需要輸入登錄名和密碼。當他們這樣做時,他們的電話/電話已經註冊到我的安寧服務中,並且他們的手機上增加了功能。當他們註銷時,他們會被取消註冊。爲了提供額外的功能(如調整後的來電者信息等),我需要Cisco AXL API。這是一個基於SOAP的API。我已經使用wsdl生成了java類。當我使用生成的類創建測試客戶端時,所有工作都正常。AXL的RESTful服務
但這裏談到的問題:當我嘗試在我的應用程序部署在Tomcat的我7容器來運行一個SOAP請求,它不工作了。
這個問題似乎是AXLAPIService,執行下面的代碼段時掛起:
@WebEndpoint(name = "AXLPort")
public AXLPort getAXLPort() {
return super.getPort(new QName("http://www.cisco.com/AXLAPIService/", "AXLPort"), AXLPort.class);
}
換句話說,我沒有得到SOAP請求的端口,它使Tomcat的崩潰,如果你等待足夠長的時間。
我去了谷歌搜索。有些論壇上的某人曾經因爲過時的stax版本而出現問題。我調整了POM中的stax版本,然後再次嘗試,沒有任何幫助。
我也讀過一些地方,下層javax.xml.ws.Service實際上有一個端口的枚舉,當你做getPort()時,你將得到最合適的端口。然後,我查找了SOAP的默認端口,這將是80,就像用於RESTful服務的端口一樣。肥皂服務可能是想要端口80,但它不能擁有它,因爲它已被使用?
所以,總結一下我的問題:
- 可以說,它是我的RESTful服務消費,我的肥皂 請求將要使用同一端口?
- 如果不是,那麼可能是什麼問題,我該如何解決?
至於更多的信息,這是AXL WSDL如何定義服務:
<service name="AXLAPIService">
<port binding="s0:AXLAPIBinding" name="AXLPort">
<soap:address location="https://CCMSERVERNAME:8443/axl/"/>
</port>
我在想改變皁埠自己。一些谷歌搜索告訴我,我應該在WSDL中這樣做,但我真的不知道如何。已有帖子here,但我看不到如何綁定另一個端口名稱可以幫助我......