Прерывистый javax.xml.ws.soap.SOAPFaultException: неквалифицированная ошибка {http://schemas.xmlsoap.org/soap/envelope/}Client - PullRequest
2 голосов
/ 17 ноября 2011

Мы используем JBossWS - Native (version 3.1.2) (Стандартная установка JBoss EAP 5.1) и периодически получаем следующее исключение ... кто-нибудь получил подсказку?

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

По моим оценкам, около 10% вызовов веб-служб получают эту ошибку.

Клиент веб-службы генерируется с помощью wsconsume

2011-11-17 09:35:05,652 ERROR [org.jboss.ws.core.CommonClient] (ajp-10.1.75.243-8209-5) Exception caught while (preparing for) performing the invocation:
javax.xml.ws.soap.SOAPFaultException: Unqualified {http://schemas.xmlsoap.org/soap/envelope/}Client fault
    at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:85)
    at org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107)
    at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:558)
    at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:396)
    at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:231)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:171)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:157)
    at $Proxy234.searchCustomerIdEquip(Unknown Source)

1 Ответ

3 голосов
/ 30 ноября 2011

Вот что я сделал для решения проблемы:

ПЕРВЫЙ ШАГ

Я обновляю свою версию Solaris Java с версии 1.6.0_23 до версии 1.6.0_27.После обновления исключение изменилось с javax.xml.ws.soap.SOAPFaultException

ERROR [org.jboss.ws.core.CommonClient] (ajp-10.1.75.243-8109-4) Exception caught while (preparing for) performing the invocation:
javax.xml.ws.soap.SOAPFaultException: Unqualified {http://schemas.xmlsoap.org/soap/envelope/}Client fault
    at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:85)
    at org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107)
    at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:558)
    at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:396)
    at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:231)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:171)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:157)

на java.io.IOException ...

[org.jboss.ws.core.CommonClient] (ajp-10.1.75.243-8109-1) Exception caught while (preparing for) performing the invocation:
java.io.IOException: Could not transmit message
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:253)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:360)
    at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:231)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:171)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:157)

ВТОРОЙ ШАГ

Получив IOException, я понял, что наши балансировщики нагрузки, вероятно, не позволяют использовать chunked-кодировку ... поэтому я изменил конфигурацию Jboss, чтобы он не использовал chunked-кодировку, отредактируйте файл ниже ..

jboss-eap-5.1.0.GA/jboss-as/server/<instance>/deployers/jbossws.deployer/META-INF/standard-jaxws-client-config.xml

.. и установите http://org.jboss.ws/http#chunksize с 2048 на 0

Это было сделано! .. У нас больше нет SOAPFaultException.

...