在尝试将HTTP Keep Alive用于基于调度的Web服务客户端(Apache CXF)时,我当前遇到问题。这是使用JAVA创建的。
第一条消息收到响应后,它将休眠30秒,然后再发送另一条消息。但是,即使我将receiveTimeOut设置为1000秒,Web服务客户端的动态端口仍在更改。
public void testSendMessage() {
logger.info("testSuccess01 start....");
String request = "SOAP Message Here";
for(int i=0; i<10; i++) {
sendWebService(namespaceUri, url, serviceName, servicePort, request);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void sendWebService(String namespace, String wsdlLocation, String serviceName, String portName, String request)
throws MalformedURLException, InterruptedException, ExecutionException {
Client client = ((org.apache.cxf.jaxws.DispatchImpl) dispatch).getClient();
HTTPConduit conduit = (HTTPConduit) client.getConduit();
conduit.getClient().setConnection(ConnectionType.KEEP_ALIVE);
conduit.getClient().setReceiveTimeout(1000000);
conduit.getClient().setConnectionTimeout(1000000);
Source requestSource = (new StreamSource(new StringReader(request)));
Source response = dispatch.invoke(requestSource);
}
可以帮助指导吗?
客户端的动态端口不断变化。即使线程休眠30秒,我也希望动态端口保持活动状态,然后在完成后重用它。