Клиент jaxws cxf зависает после нескольких вызовов

Клиент Jaxws cxf зависает после нескольких вызовов на один и тот же порт

У меня есть клиентское приложение jaxws cxf, работающее на tomcat7.

У меня очень странная проблема: после нескольких последовательных обращений к серверу веб-сервиса в какой-то момент JaxwsClientProxy зависает, и возникает ошибка «не удалось отправить сообщение», вызванная socketexception, за которой следует тайм-аут соединения.

Время ожидания соединения и время ожидания запроса уже установлено на 5 минут. Еще более странным является то, что это поведение может варьироваться от машины к машине.

Например, на моем собственном компьютере (Mac) этого не происходит, и все работает нормально, но на некоторых других машинах (Windows) и в производственной среде (Linux) эта проблема существует.

Уже неделю ломаю голову и пока безрезультатно. Я использую следующие рамки:

- Spring 2.5
 - Jaxws CXF 2.7.11
 - Java 1.6.0_45
 - Tomcat 7

Может ли это быть ошибка JVM или что-то в этом роде? Есть несколько форумов, на которых обсуждается эта проблема, но большинство из них работают на jboss, и мне не помогли решения.

Я пытался изменить версии Jaxws и cxf, но никакой разницы. Вот демонстрация кода:

GreetingsWebService service = new GreetingsWebService();
GreetingsPort port = serive.getGreetingsPort();
port.call1(); // success
port.call2(); // success
port.call3(); // error

Любой совет будет принят с благодарностью


person saman giahi    schedule 07.06.2014    source источник


Ответы (1)


Я действительно решил свою проблему. Ответ заключается в том, что если вы используете java 1.6 с jaxws 2.2.x, вам необходимо скопировать jaxws-api.jar и jaxb-api.jar в каталоги, одобренные java или tomcat. Также убедитесь, что вы создаете объект с помощью jaxws 2.2.

Если вы не скопируете банки в одобренном, java подберет старую банку jaxws по умолчанию, что приведет к странным проблемам. Также попробуйте отключить allowJunk, так как некоторые старые серверы и прокси не поддерживают мусор.

person saman giahi    schedule 21.06.2014
comment
У меня проблема, похожая на вашу. Java 1.7.0_51, CXF 2.7.12, Spring 3.2, WebLogic 12c. Если у меня отключен KeepAlive, при втором вызове происходит сбой. При включенном KeepAlive происходит сбой, когда сервер решает отключить соединение. Я попробую это и посмотрю, работает ли это. Какие классы я должен искать в подробном выводе загрузчика классов, чтобы подтвердить, что я изменил то, что, как я думал, я изменил? - person Jared; 18.08.2014