Создаются в axis2 заглушки потокобезопасным?

являются ли клиентские заглушки, созданные из WSDL потокобезопасными Axis2?

конечно, "потокобезопасный" не является необходимым строго определенным термином, поэтому меня, по крайней мере, интересует следующее:

Are разные экземпляры одного и того же класса заглушки, доступные одновременно разными потоками, с тем же эффективным поведением, что и однопоточное выполнение?

Это один экземпляр того же класса стаб работает одновременно разные потоки, с тем же эффективным поведением, что и те же вызовы, чередующиеся произвольным образом в однопоточном исполнении?

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

3 ответов


Я не уверен в axis2, но, по крайней мере, axis1 генерирует нерезьбовые клиентские заглушки. У меня сложилось впечатление, что почти каждый другой клиент SOAP также был не-threadsafe. Если я правильно помню, проблема заключалась в том, что библиотека синтаксического анализа XML использовалась не потокобезопасным способом заглушкой клиента.

использование Apache commons-pooling для объединения экземпляров и использования каждого из одного потока за раз хорошо работало.

обновление: для Axis2 см. https://issues.apache.org/jira/browse/AXIS2-4357 (претензии Axis2 не является threadsafe, по дизайну)


эти заглушки не имеют состояния, что позволяет повторно использовать экземпляры заглушки. Не могли бы вы подробнее рассказать о проблеме, с которой вы столкнулись с Axis2. Люди обычно рекомендуют Xfire над Axis.


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

посмотреть в пример:

http://markmail.org/message/3lu7x7pfo47vgnck http://markmail.org/message/sljyf6lpecxqllgx

вы можете столкнуться с некоторыми утечками сокетов и выйти из сокетов, если вы не вызываете cleanup / cleanupTransport, в соответствии с этим потоком и многими связанными:

http://issues.apache.org/jira/browse/AXIS2-3670

в некоторых случаях, по крайней мере, базовый HttpClient теперь кажется потокобезопасным, но в зависимости от того, как вы создали своего клиента, весь заглушка может быть не:

http://amilachinthaka.blogspot.com/2009/05/improving-axis2-client-http-transport.html