The standard WSDL description listed below can be found here. You can find additional information at the SOAP Builders round 4 site.
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://soapinterop.org/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://soapinterop.org/types" targetNamespace="http://soapinterop.org/wsdl"> <message name="echoVoidRequest"/> <message name="echoVoidResponse"/> <message name="HeaderRequest"> <part name="param" type="xsd:string"/> </message> <portType name="SOAPFaultPortType"> <operation name="echoVersionMismatchFault" parameterOrder=""> <input message="tns:echoVoidRequest"/> <output message="tns:echoVoidResponse"/> </operation> <operation name="echoMustUnderstandFault" parameterOrder=""> <input message="tns:echoVoidRequest"/> <output message="tns:echoVoidResponse"/> </operation> </portType> <binding name="SOAPFaultBinding" type="tns:SOAPFaultPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <!-- If the server receives an envelope with an incorrect namespace, then a fault with VersionMismatch fault code is populated in the SOAP response --> <operation name="echoVersionMismatchFault"> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapinterop.org/wsdl"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapinterop.org/wsdl"/> </output> <soap:operation soapAction=""/> </operation> <operation name="echoMustUnderstandFault"> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapinterop.org/wsdl"/> <soap:header message="tns:HeaderRequest" part="param" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapinterop.org/wsdl"/> </output> <soap:operation soapAction=""/> </operation> </binding> <service name="SOAPFaultService"> <port name="SOAPFaultPort" binding="tns:SOAPFaultBinding"> <soap:address location="http://soapinterop.novell.com/round4/grouph/soapfault"/> </port> </service> </definitions>
If you invoke wsdl2java on the above WSDL document, you can run this client to interact with the service:
package grouph.soapfault; import java.util.ArrayList; import javax.xml.namespace.QName; import javax.naming.InitialContext; import javax.xml.rpc.Stub; import javax.xml.rpc.handler.HandlerInfo; public class Client { public static void main(String[] args) throws Exception { | InitialContext ctx = new InitialContext(); | SOAPFaultService service = (SOAPFaultService) | ctx.lookup("xmlrpc:soap:grouph.soapfault.SOAPFaultService"); | | // set the handler chain | QName portName = new QName("http://soapinterop.org/wsdl", | "SOAPFaultPort"); | ArrayList handlers = new ArrayList(); | handlers.add(new HandlerInfo(SOAPFaultHandler.class, null, null)); | service.getHandlerRegistry().setHandlerChain(portName, handlers); | | SOAPFaultPortType stub = service.getSOAPFaultPort(); | | // set the end point address | if (args.length > 0) | ((Stub)stub)._setProperty("javax.xml.rpc.service.endpoint.address", | args[0]); | | echoVersionMismatchFault(stub); | echoMustUnderstandFault(stub); } public static void echoVersionMismatchFault(SOAPFaultPortType stub) { | try | { | | System.out.print("echoVersionMismatchFault: "); | | boolean result = Tests.echoVersionMismatchFault(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoVersionMismatchFault:" + | | ex.getMessage()); | | if (java.lang.System.getProperty("DEBUG") != null) | | ex.printStackTrace(); | } } public static void echoMustUnderstandFault(SOAPFaultPortType stub) { | try | { | | System.out.print("echoMustUnderstandFault: "); | | boolean result = Tests.echoMustUnderstandFault(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoMustUnderstandFault:" + | | ex.getMessage()); | | if (java.lang.System.getProperty("DEBUG") != null) | | ex.printStackTrace(); | } } }
An implementation of the service endpoint from the above WSDL is listed below:
// Thu Oct 03 12:38:40 PDT 2002 package grouph.soapfault; import javax.servlet.ServletException; public class ServerImpl extends SOAPFaultPortType_ServiceSkeleton { public void init() throws ServletException { | super.init(); | | // Set the WSDL file property | _setProperty("xmlrpc.wsdl", "soapfault.wsdl"); } public void echoVersionMismatchFault() throws java.rmi.RemoteException { } public void echoMustUnderstandFault() throws java.rmi.RemoteException { } }
Copyright © 2003, 2004 Novell, Inc. All rights reserved. Copyright © 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.