Создаются в 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