我们有一个Web服务客户端应用程序,它有太多的请求需要在单个保持活动连接上处理。
因此,我们希望创建多个保活连接。
我正在使用CXF HTTP管道进行连接,其中所有端点、服务名称、端口名称都相同。如何指定在**“连接B”**而不是“连接A”上发送此请求?
我现在遇到了一个问题,它发送到“连接A”而不是“连接B”。
Client client = ((org.apache.cxf.jaxws.DispatchImpl) dispatch).getClient();
HTTPConduit conduit = (HTTPConduit) client.getConduit();
conduit.getClient().setConnection(ConnectionType.KEEP_ALIVE);
conduit.getClient().setReceiveTimeout(0);
conduit.getClient().setConnectionTimeout(0);
TLSClientParameters tlsClientParameters = new TLSClientParameters();
tlsClientParameters.setSSLSocketFactory(socketFactory);
tlsClientParameters.setDisableCNCheck(true);
conduit.setTlsClientParameters(tlsClientParameters);
1条答案
按热度按时间deikduxw1#
我假设您的意思是当您启用keep-alive时,Tomcat会因为套接字太多而过载。Tomcat有两个设置来限制keep-alive会话的数量。第一个是keep-alive会话的最大数量,默认值为100,但您可以使用system属性降低该值:
将此值设置为小于100的值,直到服务器不再使用过多的保持活动套接字。将此值设置为正确的最大值后,应查看:
PS你还没有说你使用的是哪个Web服务器,但是默认的是Tomcat,所以我假设你使用的是Tomcat,否则有类似的设置,例如Jetty。
以上方法应该可以解决您的问题,但如果不能,您仍然可以按如下所示配置故障转移逻辑: