我有一个spring webapp。屏幕需要调用另一个Web服务(Soap协议 - 不安宁)。我正在使用cxf以合同优先方法开发该Web服务客户端。基本上,我遵循cxf示例代码:
customerServiceService = new CustomerServiceService(wsdlURL);
CustomerService customerService = customerServiceService.getCustomerServicePort();
customerService.getCustomersByName("AAAA");
到目前为止一切顺利。但是现在从我的应用程序调用该Web服务的数量大约为10k /天。您知道如何改进我的代码或将一些参数添加到cxf配置中以优化高容量的性能吗? 我无法修改服务器代码。问题仅在于我的客户端代码。
答案 0 :(得分:1)
我能想到的一个改进是,避免每个请求创建Webservice对象。只要您没有修改拦截器等,客户端就是线程安全的。有关详细信息,请查看here。
答案 1 :(得分:1)
我相信你不能按要求创建webservice客户端。如果是,则创建客户端的bean并以spring配置注入它。
可以通过SpringBus配置Cxf,因此配置cxf总线并提供no。根据您的要求连接。
SpringBus bus = new SpringBus();
bus.setProperty(AsyncHTTPConduit.USE_ASYNC, Boolean.TRUE);
bus.setProperty("org.apache.cxf.transport.http.async.SO_KEEPALIVE",Boolean.TRUE);
bus.setProperty("org.apache.cxf.transport.http.async.SO_TIMEOUT",Boolean.FALSE);
bus.setProperty("org.apache.cxf.transport.http.async.MAX_CONNECTIONS","totalConnections"));
bus.setProperty("org.apache.cxf.transport.http.async.MAX_PER_HOST_CONNECTIONS","connectionsPerHost"));
默认总连接数为5000,因此默认值可能就足够了。 我认为这种配置应该会给您带来性能优势。