javajbossjbosswssolaris-10

Intermittent javax.xml.ws.soap.SOAPFaultException: Unqualified {http://schemas.xmlsoap.org/soap/envelope/}Client fault


We are using JBossWS - Native (version 3.1.2) (Standard JBoss EAP 5.1 installation) and we are intermitently getting the following exception..., anyone got a clue?

If I test with a few calls to the webservice it is working fine, but once deployed into production we start seeing this error.. most of the times it works fine.. but sometimes we see this error..

I would estimate about 10% of the web service calls are getting this error.

The web service client is generated using 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)

Solution

  • Here is what I did to solve the problem,

    FIRST STEP

    I upgrade my Solaris Java version from version 1.6.0_23 to version 1.6.0_27. After upgrading the exception changed from 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)
    

    to 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)
    

    SECOND STEP

    After getting IOException, then I realised our load balancers probably not allowing chunked encoding.. so I changed Jboss configuration so that it does not use chunked encoding, edit the file below..

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

    .. and set the http://org.jboss.ws/http#chunksize from 2048 to 0

    That did it!.. we are no longer having SOAPFaultException.