Являются ли прокси-клиенты CXF безопасными для потоков?

Я использую CXF для генерации клиентских классов SOAP. вДокументация CXF, они пишут

Являются ли прокси-клиенты JAX-WS безопасными для потоков?

Официальный ответ JAX-WS: Нет. В соответствии со спецификацией JAX-WS прокси клиента НЕ являются поточно-ориентированными. Чтобы написать переносимый код, вы должны относиться к ним как к поточнопроцессорным и синхронизировать доступ или использовать пул экземпляров или аналогичный.

Ответ CXF: прокси-серверы CXF поточно-ориентированы для МНОГИХ вариантов использования. Исключения:

(Я опускаю их описание этих вариантов использования)

В большинстве «простых» случаев вы можете использовать прокси CXF в нескольких потоках. Выше изложены обходные пути для других.

У кого-нибудь есть противоположные переживания? Обнаружены проблемы с многопоточностью, которые не описаны в их FAQ? Или их описание точное и они в основном безопасны в использовании?

 Eyal08 мар. 2013 г., 00:20
@MaartenBoekhold Я имел в виду сгенерированные клиентские прокси.
 Maarten Boekhold07 мар. 2013 г., 07:38
Что именно это значит? Означает ли это, что клиентские проксикак генерируется CXFwsdl2java являются (в основном) поточно-ориентированными, или вам нужно использовать какие-либо реальные API CXF в вашей клиентской программе?

Ответы на вопрос(2)

вероятно, имеете в виду время выполнения, но я не думаю, что время конфигурации предназначено для обеспечения безопасности потоков. Мне кажется, я видел состояние гонки в JettyHTTPServerEngineFactory.

В тестовом жгуте мы задействуем несколько несвязанных серверов SOAP, и когда они совместно используют шину, существует вероятность возникновения состояния гонки, если несколько потоков попытаются добавить экземпляры JettyHTTPServerEngine одновременно. Конкретное условие гонки находится в setTLSServerParametersForPort (), которую вы вызываете, когда хотите использовать HTTPS для порта. Этот метод добавляет элементы в HashMap без блокировки.

Я думаю, причина, по которой другие не сталкиваются с этим, заключается в том, что большинство людей настраивают CXF с помощью файлов конфигурации, и редко бывает, чтобы в одном процессе было несколько портов / серверов Jetty.

 David Gladfelter18 авг. 2014 г., 03:48
И оказывается, что более новая версия CXF исправляет это конкретное состояние гонки, но я не видел окончательного контракта на многопоточность в документации CXF. Кроме того, карта является статической, поэтому состояние гонки в более старой версии происходит независимо от шины.
Решение Вопроса

указано в часто задаваемых вопросах, на которые вы ссылаетесь, за исключением функций, которые изменяют HTTP-канал на лету (например, функции управления сеансами и отработки отказа), клиентский прокси CXF является поточно-ориентированным. Так что, если вы не используете эти функции, то можно разделить клиентский прокси между потоками.

Ваш ответ на вопрос