2009-12-23 4 views
16

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

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

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

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

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

+0

Я был под впечатлением, что Apache Axis2 был быть свернута в пользу Apache CXF: http://cxf.apache.org/ – Powerlord

+0

Это может но мой вопрос по-прежнему стоит, поскольку у меня нет возможности изменить нашу базовую структуру на данный момент (когда-нибудь, может быть:) ... – BeeOnRope

ответ

16

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

Использование пула apache для объединения экземпляров и использования каждого из одного потока за время работы.

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

+1

Чтобы быть понятным, вы имеете в виду, что вы не можете использовать * тот же самый экземпляр из нескольких потоков, но использование нескольких экземпляров (одного и того же класса stub) из нескольких потоков в порядке, если нет параллельного доступа к любому данному экземпляру? – BeeOnRope

+0

Да. И, очевидно, экземпляры заглушек не обязательно должны быть привязаны к определенному потоку. –

+0

Но нижеприведенный автор утверждает, что осевые окурки не имеют состояния и поэтому могут быть безопасно доступны из нескольких потоков одновременно: http://stackoverflow.com/questions/1950080/are-axis2-generated-stubs-thread-safe/1968188# 1968188 –

2

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

+0

Я думал, что XFire не работает и сложен в другой проект – Jherico

+0

Вы можете назвать CXF как XFire2 .0, я немного склонен к этому :) –

+1

Спасибо за ответ - можете ли вы прокомментировать, какой уровень безопасности потоков предлагается? Вы можете вызывать любой метод на одном и том же объекте из любого количества потоков одновременно и получать ожидаемое поведение? У меня нет особых проблем с Axis2 - просто мы создали заглушки, используя фреймворк, и вам нужно количественно оценить уровень безопасности потоков для таких компонентов. Это (относительно) легко для вещей, которые вы пишете сами, но более сложных для автоматически генерируемых вещей. – BeeOnRope

1

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

Смотрите, например:

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

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

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

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

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

Смежные вопросы