axis2作为客户端产生大量文件的解决方案

问题:使用axis2调用远程webservice时,产生大量临时文件写入磁盘,降低程序运行效率,占用磁盘空间

前提:使用axis2客户端版本:1.7.4

解决方案:

1:在初始化RPCServiceClient 使用构造器RPCServiceClient(ConfigurationContext configContext, AxisService service) 替换默认构造器

在wsdl生产的java文件中使用ConfigurationContext 的静态化

private  static final ConfigurationContext configurationContextStatic  = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null)

综合事例:

 

 private static org.apache.axis2.context.ConfigurationContext configurationContextStatic;
   
    static {
      try {
         configurationContextStatic = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null);
      } catch (AxisFault e) {
        e.printStackTrace();
      }
    }

 

@Override
    public String abc(String reqXml) throws Exception
    {
        String value="";
        RPCServiceClient serviceClient=init();
        Object[] toParams = new Object[] {reqXml};
        Class<?>[] clazzs = new Class[] {String.class};
        Object[] resultList = null;
        QName addEntry = new QName("http://service.xx.xxx.com.cn","abc");
        resultList = serviceClient.invokeBlocking(addEntry, toParams, clazzs);
        if(null!=resultList){
            value= resultList[0].toString();
        }
        serviceClient.cleanupTransport();
        return value;
    }
    
    public RPCServiceClient init() throws AxisFault{
        RPCServiceClient serviceClient = new RPCServiceClient(configurationContextStatic,null);
        Options options = serviceClient.getOptions();
        options.setTimeOutInMilliSeconds(1000*60*3);
        EndpointReference ference = new EndpointReference("http://localhost:8090/api/services/exampleService?wsdl");
        options.setTo(ference);
     
        return serviceClient;
    }
 
  

其中主要的一个如果加完  RPCServiceClient serviceClient = new RPCServiceClient(configurationContextStatic,null);  会导致报超时:需要后面别忘了加:  serviceClient.cleanupTransport();

 

2.参考资料

https://issues.apache.org/jira/browse/AXIS2-3919

 

http://stackoverflow.com/questions/8935581/how-to-delete-apache-axis-tmp-files-without-restarting/21735180#21735180

 

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c422461e1f3ebce3763f4344959e2d3956b21f0baca36d2c761e26b799cd8c48d8be866d72c8713b2356dd0005d269afdc4654d651934d9fa40e96c9e74290b9d3a3c82524dd22036df0819c2e7703ca1eb6436ea1&p=c4769a4786cc42af5ea9dc3a584a8b&newp=9b788b16d9c11abe08e2977e0b4dcb231610db2151d4da166b82c825d7331b001c3bbfb423231502d2c27f6105aa4959eef6347233092ba3dda5c91d9fb4c57479d336&user=baidu&fm=sc&query=axis2+%C1%D9%CA%B1%CE%C4%BC%FE+temp&qid=ff655e880001a99b&p1=2 

转发:https://blog.csdn.net/cc_weige/article/details/84896937

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值