因此,为了给您一些背景知识,我正在尝试创建一个将通过 SOAP 与第三方交互的客户端。最初我开始使用 javax.xml.soap SAAJ 推出它,但后来意识到在创建 SOAPConnection 时没有超时选项。
我认为 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);
进入更像网络服务的东西,所以我可以这样做:
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 2000);
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 2000);
myService.callMyRemoteMethodWith(myParameter1, myparameter2);
我真的缺乏关于 javax.ws 框架的知识,所以请轻描淡写:)