Повторное использование HTTP-соединения в JAX-WS - PullRequest
2 голосов
/ 19 августа 2010

Как включить повторное использование HTTP-соединения при использовании JAX-WS? Когда мы использовали AXIS2, мы установили свойство org.apache.axis2.transport.http.HTTPConstants.REUSE_HTTP_CLIENT в настройках заглушки клиента. Что эквивалентно для JAX-WS?

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

Ответы [ 2 ]

4 голосов
/ 18 января 2011

Поскольку я тоже страдал от этой проблемы, я углубился в нее. Казалось, что текущая (JDK 6) версия неправильно использует свойство http.keepAlive, хотя в Руководстве (см. Мой последний пост) говорится об этом, что не позволяет повторно использовать соединения HTTP (TCP) для нескольких вызовов одного и того же клиента. Затем я обнаружил этот отчет об ошибке , подтверждающий мои подозрения. В соответствии с отчетом об ошибке вам нужно обновить реализацию JAX-WS RI (aka Metro) до> = 2.1.2.

Если вы обновитесь до самой последней версии (которая на момент написания этой статьи была 2.2.1), вам, возможно, придется использовать механизм переопределенных стандартов, чтобы JRE работал с правильной (новой) версией библиотек. Это связано с тем, что JAX-WS RI 2.2 основан на API-интерфейсах JAX-WS 2.2, но только 2.1 поставляется с текущей версией JDK / JRE.

Ура, Даниэль

2 голосов
/ 17 января 2011

Согласно Metro JAX-WS Guide вам просто нужно установить переменную среды Java http.keepAlive в true.

...