Axis2-HTTP传输优化

2019-12-24  本文已影响0人  乐傻驴

前言

  今年开始从事医疗行业的开发工作,也是第一次接触到WebService,并重构某三甲医院互联网医院后台,其中就涉及到了大量的对第三方HIS调用的WebService接口、在客户端选择方面我选择了axis2、通过IDEA生成axis2客户端,并交给了spring管理、前期接口切入较少流量不大,没有发现错误,直到有陆陆续续切了10多个接口,这几个接口对院方HIS系统调用频繁,且HIS接口返回很不稳定,并导致出现了一系列问题。

问题

经过排查发现有两个原因:

解决

Options options = new Options();
//套接字超时
options.setProperty(HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
//连接超时
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));
// 或者
options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
/**
 * ConfigurationContext
 * @return {@link ConfigurationContext}
 * @throws AxisFault AxisFault
 */
public ConfigurationContext configurationContext() throws AxisFault {
    //配置HTTP连接池
    ConfigurationContext configurationContext = ConfigurationContextFactory
        .createConfigurationContextFromFileSystem(null, null);
    MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
    //默认5
    connectionManager.getParams().setDefaultMaxConnectionsPerHost(5);
    //最大20
    connectionManager.getParams().setMaxTotalConnections(20);
    HttpClient client = new HttpClient(connectionManager);
    configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, client);

    return configurationContext;
}

参考

http://axis.apache.org/axis2/java/core/docs/http-transport.html

总结

  配置还是蛮简单的、文章简单的讲了讲需要的API、配置方式可以很多、API都是一样的、如果和大家配置方式不一致、还希望举一反三、毕竟换汤不换药。

上一篇下一篇

猜你喜欢

热点阅读