Axis2 1.4客户端并发问题(重用Stub)

时间:2014-06-30 18:40:16

标签: java spring web-services concurrency axis2

我已经分配了一项工作来调查并提出修复间歇性和(显然)不可复制的错误,导致Web服务调用失败,并出现以下错误:

Message does not conform to configured policy [ TimestampPolicy(S) AuthenticationTokenPolicy(S) ]:  No Security Header found

该应用程序是面向高流量网站的在线公众的基于Spring的后端。可以使用Axis2 1.4客户端访问Web服务。

我认为我已经设法将问题跟踪到可能的并发问题,但它似乎并没有完全依赖于负载,故障统计数据并不支持它(有时几天低负荷比高负荷天数差。)

无论如何,Web服务的所有客户端代码都包含在带有@Repository注释的单个类中。需要访问此WebServiceClient类的更广泛应用程序中的类使用@Resource注释在类范围内声明,并根据需要自动装入。

我认为问题是在WebServiceClient中,存根在类范围内声明如下:

private ValidationStub validationStub;
private CustInfoStub custInfoStub;

并在调用Web服务时在方法范围内初始化

this.validationStub= new ValidationStub (this.url);
prepareStub(this.validationPort, username, password);

其中prepareStub方法创建安全标头并按如下方式添加:

stub._getServiceClient().addHeader(element);

我认为如果我将存根从类范围移到方法范围,它将解决问题,如下所示:

ValidationStub validationStub = new ValidationStub(this.url);

有没有人遇到过类似的问题?我有点担心做出这种改变会对性能产生影响。

0 个答案:

没有答案