加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

cxf动态调用webservice设置超时,测试线程安全

发布时间:2020-12-17 00:19:53 所属栏目:安全 来源:网络整理
导读:Java代码 ? import ?java.util.Random;?? import ?java.util.concurrent.ArrayBlockingQueue;?? import ?java.util.concurrent.ThreadPoolExecutor;?? import ?java.util.concurrent.TimeUnit;?? ?? import ?org.apache.cxf.endpoint.Client;?? import ?org.
Java代码
?

收藏代码

  1. import?java.util.Random;??
  2. import?java.util.concurrent.ArrayBlockingQueue;??
  3. import?java.util.concurrent.ThreadPoolExecutor;??
  4. import?java.util.concurrent.TimeUnit;??
  5. ??
  6. import?org.apache.cxf.endpoint.Client;??
  7. import?org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;??
  8. import?org.apache.cxf.transport.http.HTTPConduit;??
  9. import?org.apache.cxf.transports.http.configuration.HTTPClientPolicy;??
  10. public?class?WSClient?{??
  11. ????static?void?main(String[]?args)throws?Exception?{??
  12. ????????String?wsdlUrl?=?"http://172.16.11.11:8080/webws/CalculatorPort?wsdl";??
  13. ????????//动态调用的客户端工厂类??
  14. ????????JaxWsDynamicClientFactory?factory?=?JaxWsDynamicClientFactory.newInstance();??
  15. ????????final?Client?client?=?factory.createClient(wsdlUrl);??
  16. //设置超时单位为毫秒??
  17. ????????HTTPConduit?http?=?(HTTPConduit)?client.getConduit();????????
  18. ????????HTTPClientPolicy?httpClientPolicy?=?new?HTTPClientPolicy();????????
  19. ????????httpClientPolicy.setConnectionTimeout(3000);??//连接超时??????
  20. ????????httpClientPolicy.setAllowChunking(false);????//取消块编码???
  21. ????????httpClientPolicy.setReceiveTimeout(3000);?????//响应超时??
  22. ????????http.setClient(httpClientPolicy);??
  23. ??????????
  24. //用线程池试了下client对象线程安全性,发现是安全的??
  25. ????????ThreadPoolExecutor?pool?=?new?ThreadPoolExecutor(5,50,0)">1000,??
  26. ????????????????TimeUnit.MICROSECONDS,new?ArrayBlockingQueue<Runnable>(50));??
  27. for?(int?i=0;i<100;i++){??
  28. ????????????pool.execute(new?Runnable()?{??
  29. ????????????????@Override??
  30. ????????????????void?run()?{??
  31. ????????????????????try?{??
  32. ????????????????????????String?threadName?=?Thread.currentThread().getName();??
  33. ????????????????????????int?a?=?new?Random().nextInt(10);??
  34. int?b?=? ????????????????????????Object[]?res?=?client.invoke("adD",?a,b);??
  35. ????????????????????????System.out.println(threadName+":"+a+"+"+b+"="+res[0]);??
  36. ????????????????????}?catch?(Exception?e)?{??
  37. ????????????????????????e.printStackTrace();??
  38. ????????????????????}??
  39. ????????????????}??
  40. ????????????});??
  41. ????????}??
  42. ????}??
  43. }??

?结果:

pool-1-thread-37:0+5=5??
  • 21:1+4=33:6+3=9??
  • 49:0=6??
  • 42:7+1=8??
  • ...??
  • 7:12??
  • 46:9+2=11??
  • 17:34:2+36:8+40:9=10??
  • 26:4+35:3+7??
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读