所以爲了給你一些背景知識,我試圖創建一個客戶端,它將通過SOAP與第三方進行交互。最初,我開始使用javax.xml.soap SAAJ進行推出,但後來認識到在創建SOAPConnection時沒有超時選項。作爲Web服務的Java SOAP請求?
我認爲AXIS確實有超時但已被警告要儘量避免,並且它不是很好的性能。我的上級似乎把這作爲最後的恢復。
一些人建議javax.xml.ws Web服務路由工作得很好,因爲只有當它是Web服務時,您纔可以在上下文屬性中設置超時設置。
所以這裏是情況,我發送請求的第三方並沒有真正的WSDL文件或URL,最初的想法是構建SOAP請求併發送它, SAAJ有超時設置。
所以我在思考和原諒我的無知,是我可以建模和實現像Web服務的通信,而不是建立請求的SAAJ javax.xml.soap方法?如果是這樣,任何人都可以指出我嗎?我發現大多數文檔似乎都依賴於從WSDL生成存根和類。
這完全是爲了設置連接到此第三方SOAP API的超時設置。
另外請注意,我見過一些人建議嘗試和對待它像一個HttpConnection你可以設置超時,但我發現它的缺點是它不再返回一個SOAPMessage類型的對象。
所以基本上我試圖改變這種:
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
SOAPHeader soapHeader = soapEnvelope.getHeader();
SOAPBody soapBody = soapEnvelope.getBody();
....
soapConnection.call(soapMessage, url);
到的東西更像是Web服務,以便我能做到這一點:
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 2000);
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 2000);
myService.callMyRemoteMethodWith(myParameter1, myparameter2);
我真的很缺乏有關知識javax.ws框架,所以請輕輕一點:)
考慮爲遠程服務創建WSDL?然後有很多工具可用。 –
+1我建議使用JAX-WS + JAXB註釋生成WSDL。 – Puce
這可能是一個選項,可能看起來有點奇怪,爲我的控制生成第三方的WSDL,但這是一個選項。 –