美文网首页
Axis2-HTTP传输优化

Axis2-HTTP传输优化

作者: 乐傻驴 | 来源:发表于2019-12-24 14:58 被阅读0次

前言

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

问题

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

  • 超时时间过短
  • Http Client连接池过小导致的,由于axis2默认值为每个主机分配了2个连接,请求量大、返回慢、导致连接池不够用。

解决

  • 超时时间过短,在Options加入套接字超和连接超时配置即可,也可以将参数加入构造参数,通过创建对象传入要设置的超时时间。你也创建私有变量,创建对象时set进去,只要能配置上,即可。
Options options = new Options();
//套接字超时
options.setProperty(HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
//连接超时
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));
// 或者
options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
  • 配置连接池
      本来想直接在生成的客户端代理构造中添加配置来,配置上启动报错,原来是 ConfigurationContext为null造成的。
      于是debug org.apache.axis2.client.ServiceClient(configurationContext, _service)内部代码,果然内部有处理ConfigurationContext为null的话,将会创建一个,于是自己便构造了ConfigurationContext对象,并配置连接池,构建客户端代理对象的时候传入configurationContext()
/**
 * 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都是一样的、如果和大家配置方式不一致、还希望举一反三、毕竟换汤不换药。

相关文章

  • Axis2-HTTP传输优化

    前言   今年开始从事医疗行业的开发工作,也是第一次接触到WebService,并重构某三甲医院互联网医院后台,其...

  • 面试问到的问题

    性能优化: 一、网络传输阶段 1、减少传输过程中实体的大小 1)缓存 2)cookie优化 3)文件压...

  • 前端性能优化-开篇

    前端性能优化问题是每个前端需要掌握的技术。这篇文章从渲染优化、代码优化、资源优化、构建优化、传输加载优化、更多流行...

  • 前端性能优化-传输加载优化

    一、启用压缩Gzip Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时...

  • 网络传输优化----flatBuffer

    1.优点 2.使用方法 下载文件编译工具1.下载源码$ git clone https://github.com/...

  • 在Android中使用Protocol Buffers

    网络性能优化的终极手法就是不通过网络传输,但这常常是不可能的。但我们还是可以通过对网络传输的数据本身做优化,来获得...

  • Kafka设计之美

    一 数据传输 1 传统数据从文件到网络的传输路径 2 传统数据从文件到网络的传输路径图解 3 对传统数据传输的优化...

  • Mapreduce 优化策略

    优化策略 优化Map和Reducer数量。 输入,大文件优于小文件。 减少网络传输(尤其是shuffle阶段):压...

  • HTTPS (三)

    HTTPS ****访问速度优化 Tcp fast open HTTPS 和 HTTP 使用 TCP 协议进行传输...

  • 通过摄像头识别环境亮度

    YUV是一种新的图像传输格式,YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输...

网友评论

      本文标题:Axis2-HTTP传输优化

      本文链接:https://www.haomeiwen.com/subject/tdcfoctx.html