MyService.java
package com.training.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class MyService {
@WebMethod
public String correctInvokeMethod() {
return "done";
}
@WebMethod
public String soapServerFaultCode() {
throw new RuntimeException();
}
@WebMethod
public void soapClientFaultCode(int a) {
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.training</groupId>
<artifactId>jax_ws_soap_fault_code</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
wsdl
<wsdl:definitions name="MyServiceService"
targetNamespace="http://ws.training.com/">
<wsdl:types>
<xs:schema elementFormDefault="unqualified" targetNamespace="http://ws.training.com/"
version="1.0">
<xs:element name="correctInvokeMethod" type="tns:correctInvokeMethod" />
<xs:element name="correctInvokeMethodResponse" type="tns:correctInvokeMethodResponse" />
<xs:element name="soapClientFaultCode" type="tns:soapClientFaultCode" />
<xs:element name="soapClientFaultCodeResponse" type="tns:soapClientFaultCodeResponse" />
<xs:element name="soapServerFaultCode" type="tns:soapServerFaultCode" />
<xs:element name="soapServerFaultCodeResponse" type="tns:soapServerFaultCodeResponse" />
<xs:complexType name="soapServerFaultCode">
<xs:sequence />
</xs:complexType>
<xs:complexType name="soapServerFaultCodeResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="correctInvokeMethod">
<xs:sequence />
</xs:complexType>
<xs:complexType name="correctInvokeMethodResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="soapClientFaultCode">
<xs:sequence>
<xs:element name="arg0" type="xs:int" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="soapClientFaultCodeResponse">
<xs:sequence />
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="soapServerFaultCode">
<wsdl:part element="tns:soapServerFaultCode" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="soapClientFaultCode">
<wsdl:part element="tns:soapClientFaultCode" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="soapServerFaultCodeResponse">
<wsdl:part element="tns:soapServerFaultCodeResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="correctInvokeMethodResponse">
<wsdl:part element="tns:correctInvokeMethodResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="soapClientFaultCodeResponse">
<wsdl:part element="tns:soapClientFaultCodeResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="correctInvokeMethod">
<wsdl:part element="tns:correctInvokeMethod" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="MyService">
<wsdl:operation name="soapServerFaultCode">
<wsdl:input message="tns:soapServerFaultCode" name="soapServerFaultCode">
</wsdl:input>
<wsdl:output message="tns:soapServerFaultCodeResponse"
name="soapServerFaultCodeResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="correctInvokeMethod">
<wsdl:input message="tns:correctInvokeMethod" name="correctInvokeMethod">
</wsdl:input>
<wsdl:output message="tns:correctInvokeMethodResponse"
name="correctInvokeMethodResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="soapClientFaultCode">
<wsdl:input message="tns:soapClientFaultCode" name="soapClientFaultCode">
</wsdl:input>
<wsdl:output message="tns:soapClientFaultCodeResponse"
name="soapClientFaultCodeResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MyServiceServiceSoapBinding" type="tns:MyService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="correctInvokeMethod">
<soap:operation soapAction="" style="document" />
<wsdl:input name="correctInvokeMethod">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="correctInvokeMethodResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="soapServerFaultCode">
<soap:operation soapAction="" style="document" />
<wsdl:input name="soapServerFaultCode">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="soapServerFaultCodeResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="soapClientFaultCode">
<soap:operation soapAction="" style="document" />
<wsdl:input name="soapClientFaultCode">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="soapClientFaultCodeResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MyServiceService">
<wsdl:port binding="tns:MyServiceServiceSoapBinding" name="MyServicePort">
<soap:address
location="http://localhost:9080/jax_ws_soap_fault_code/MyServiceService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
correct response
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:correctInvokeMethodResponse xmlns:ns2="http://ws.training.com/">
<return>done</return>
</ns2:correctInvokeMethodResponse>
</soap:Body>
</soap:Envelope>
soap:Server fault code
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>java.lang.RuntimeException</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
soap:Client fault code
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: Not a number: test</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>