HTTP对分派的Web服务客户端保持活动

时间:2018-08-03 14:34:22

标签: web-services http-headers

在尝试将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秒,我也希望动态端口保持活动状态,然后在完成后重用它。

0 个答案:

没有答案