使用cxf多次调用webservice接口出错

awswt 2016-11-21 10:29:31
用cxf调用同一个webservice地址,因为要推送多种类型数据,故分多线程一起推,但是在调用接口服务的时候报错
java.lang.LinkageError: loader (instance of com/ats/esb/module/launcher/AESBApplicationClassLoader): attempted duplicate class definition for name: "com/ats/emr/webservice/GetPdf"
URL wsdlURL = WebServicePDFService.WSDL_LOCATION;
WebServicePDFService ss=new WebServicePDFService(wsdlURL, WebServicePDFService.SERVICE);
WebServicePDF port = ss.getWebServicePDF();
String _getPdf__return = port.getPdf(visitFlowId, type, xmlStr);

但是将ss改为全局变量之后,代码改为
URL wsdlURL = WebServicePDFService.WSDL_LOCATION;
if(ss==null){
ss=new WebServicePDFService(wsdlURL, WebServicePDFService.SERVICE);
}
WebServicePDF port = ss.getWebServicePDF();
String _getPdf__return = port.getPdf(visitFlowId, type, xmlStr);

程序就正常运行了

我想知道为什么第一次代码的时候jvm会实例化两次WebServicePDFService?导致报出上面的错误
不是应该直接去堆中找到实例然后再将引用指向ss么.
...全文
339 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylovep 2016-11-21
  • 打赏
  • 举报
回复
确实奇葩 理论上应该都是可以的
魔都 2016-11-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/wangjian223344/article/details/11899187 看我博客 xifre
awswt 2016-11-21
  • 打赏
  • 举报
回复
引用 4 楼 wangjian223344 的回复:
是的呀。我写的已经狠细了呀。你在看看
...你的 JAVA中使用XFire调用WebService接口 这个文章? 跟我的提问貌似并没有关系啊
魔都 2016-11-21
  • 打赏
  • 举报
回复
是的呀。我写的已经狠细了呀。你在看看
awswt 2016-11-21
  • 打赏
  • 举报
回复
引用 1 楼 wangjian223344 的回复:
http://blog.csdn.net/wangjian223344/article/details/11899187 看我博客 xifre
并不能看懂啊?是你那个xifre的文章吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧