Проблема параллелизма на стороне клиента Axis2 1.4 (повторное использование заглушки)

#java #spring #web-services #concurrency #axis2

#java #весна #веб-сервисы #Параллелизм #axis2

Вопрос:

Мне была поручена часть работы по расследованию и предложению исправления прерывистой и (по-видимому) невоспроизводимой ошибки, которая приводит к сбою вызовов веб-служб со следующей ошибкой:

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

Приложение представляет собой серверную часть на основе Spring для общедоступного веб-сайта с высоким трафиком. Доступ к веб-службам осуществляется с помощью клиента Axis2 1.4.

Я думаю, что мне удалось отследить проблему вплоть до возможной проблемы параллелизма, но, похоже, она не привязана к загрузке точно, статистика сбоев не поддерживает ее (иногда дни с низкой нагрузкой хуже, чем дни с высокой нагрузкой).

В любом случае, весь клиентский код для веб-служб содержится в одном классе с аннотацией @Repository . Классы в более широком приложении, которым требуется доступ к этому классу WebServiceClient, объявляют его в области видимости класса с аннотацией @Resource, где он автоматически подключается по мере необходимости.

Проблема, как я вижу, заключается в том, что в WebServiceClient заглушки объявляются в области видимости класса следующим образом:

 private ValidationStub validationStub;
private CustInfoStub custInfoStub;
  

и инициализируются в области метода при вызове веб-службы

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

где метод prepareStub создает заголовок безопасности и добавляет его следующим образом:

 stub._getServiceClient().addHeader(element);
  

Я думаю, что если я перемещу заглушки из области класса в область метода, это решит проблему, например:

 ValidationStub validationStub = new ValidationStub(this.url);
  

Кто-нибудь сталкивался с подобной проблемой? Я немного обеспокоен тем, что внесение этого изменения повлияет на производительность.