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"?> <wsdl:definitions name="SOAPBuilders" xmlns="http://soapinterop.org/attachments/wsdl" xmlns:types="http://soapinterop.org/attachments/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://soapinterop.org/attachments/wsdl"> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/attachments/xsd" elementFormDefault="qualified" attributeFormDefault="qualified"> <complexType name="binary"> <simpleContent> <extension base="xsd:base64Binary"> <attribute name="href" type="xsd:anyURI"/> </extension> </simpleContent> </complexType > <element name="EchoAttachment" type="types:EchoAttachment"/> <element name="EchoAttachmentResponse" type="types:EchoAttachmentResponse"/> <complexType name="EchoAttachment"> <sequence> <element name="In" type="types:binary"/> </sequence> </complexType> <complexType name="EchoAttachmentResponse"> <sequence> <element name="Out" type="types:binary"/> </sequence> </complexType> <element name="EchoAttachments" type="types:Attachments"/> <element name="EchoAttachmentsResponse" type="types:Attachments"/> <complexType name="Attachments"> <sequence> <element name="Item" minOccurs="0" maxOccurs="unbounded" type="types:binary"> </element> </sequence> </complexType> <element name="EchoAttachmentAsBase64" type="types:EchoAttachment"/> <element name="EchoAttachmentAsBase64Response" type="types:EchoAttachmentResponse"/> <element name="EchoBase64AsAttachment" type="types:EchoAttachment"/> <element name="EchoBase64AsAttachmentResponse" type="types:EchoAttachmentResponse"/> </schema> </wsdl:types> <wsdl:message name="EchoAttachmentIn"> <wsdl:part name="In" element="types:EchoAttachment"/> </wsdl:message> <wsdl:message name="EchoAttachmentOut"> <wsdl:part name="Out" element="types:EchoAttachmentResponse"/> </wsdl:message> <wsdl:message name="EchoAttachmentsIn"> <wsdl:part name="In" element="types:EchoAttachments"/> </wsdl:message> <wsdl:message name="EchoAttachmentsOut"> <wsdl:part name="Out" element="types:EchoAttachmentsResponse"/> </wsdl:message> <wsdl:message name="EchoAttachmentAsBase64In"> <wsdl:part name="In" element="types:EchoAttachmentAsBase64"/> </wsdl:message> <wsdl:message name="EchoAttachmentAsBase64Out"> <wsdl:part name="Out" element="types:EchoAttachmentAsBase64Response"/> </wsdl:message> <wsdl:message name="EchoBase64AsAttachmentIn"> <wsdl:part name="In" element="types:EchoBase64AsAttachment"/> </wsdl:message> <wsdl:message name="EchoBase64AsAttachmentOut"> <wsdl:part name="Out" element="types:EchoBase64AsAttachmentResponse"/> </wsdl:message> <wsdl:portType name="AttachmentsPortType"> <wsdl:operation name="EchoAttachment"> <wsdl:input name="EchoAttachmentInput" message="EchoAttachmentIn"/> <wsdl:output name="EchoAttachmentOutput" message="EchoAttachmentOut"/> </wsdl:operation> <wsdl:operation name="EchoAttachments"> <wsdl:input name="EchoAttachmentsInput" message="EchoAttachmentsIn"/> <wsdl:output name="EchoAttachmentsOutput" message="EchoAttachmentsOut"/> </wsdl:operation> <wsdl:operation name="EchoAttachmentAsBase64"> <wsdl:input name="EchoAttachmentAsBase64Input" message="EchoAttachmentAsBase64In"/> <wsdl:output name="EchoAttachmentAsBase64Output" message="EchoAttachmentAsBase64Out"/> </wsdl:operation> <wsdl:operation name="EchoBase64AsAttachment"> <wsdl:input name="EchoBase64AsAttachmentInput" message="EchoBase64AsAttachmentIn"/> <wsdl:output name="EchoBase64AsAttachmentOutput" message="EchoBase64AsAttachmentOut"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="AttachmentsBinding" type="AttachmentsPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="EchoAttachment"> <soap:operation soapAction="http://soapinterop.org/attachments/"/> <wsdl:input name="EchoAttachmentInput"> <mime:multipartRelated> <mime:part> <soap:body use="literal"/> </mime:part> <mime:part> <mime:content part="In" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:input> <wsdl:output name="EchoAttachmentOutput"> <mime:multipartRelated> <mime:part> <soap:body use="literal" /> </mime:part> <mime:part> <mime:content part="Out" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:output> </wsdl:operation> <wsdl:operation name="EchoAttachments"> <soap:operation soapAction="http://soapinterop.org/attachments/"/> <wsdl:input name="EchoAttachmentsInput"> <mime:multipartRelated> <mime:part> <soap:body use="literal"/> </mime:part> <mime:part> <mime:content part="In" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:input> <wsdl:output name="EchoAttachmentsOutput"> <mime:multipartRelated> <mime:part> <soap:body use="literal"/> </mime:part> <mime:part> <mime:content part="Out" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:output> </wsdl:operation> <wsdl:operation name="EchoAttachmentAsBase64"> <soap:operation soapAction="http://soapinterop.org/attachments/"/> <wsdl:input name="EchoAttachmentAsBase64Input"> <mime:multipartRelated> <mime:part> <soap:body use="literal"/> </mime:part> <mime:part> <mime:content part="In" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:input> <wsdl:output name="EchoAttachmentAsBase64Output"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="EchoBase64AsAttachment"> <soap:operation soapAction="http://soapinterop.org/attachments/"/> <wsdl:input name="EchoBase64AsAttachmentInput"> <soap:body use="literal" /> </wsdl:input> <wsdl:output name="EchoBase64AsAttachmentOutput"> <mime:multipartRelated> <mime:part> <soap:body use="literal"/> </mime:part> <mime:part> <mime:content part="Out" type="application/octetstream"/> </mime:part> </mime:multipartRelated> </wsdl:output> </wsdl:operation> </wsdl:binding> </wsdl:definitions>
If you invoke wsdl2java on the above WSDL document, you can run this client to interact with the service:
package groupg.mimedoc; import javax.naming.InitialContext; import javax.xml.rpc.Stub; public class Client { public static void main(String[] args) throws Exception { | InitialContext ctx = new InitialContext(); | AttachmentsService service = (AttachmentsService) | ctx.lookup("xmlrpc:soap:groupg.mimedoc.AttachmentsService"); | AttachmentsPortType stub = service.getAttachmentsPort(); | | // set the end point address | if (args.length > 0) | ((Stub)stub)._setProperty("javax.xml.rpc.service.endpoint.address", | args[0]); | | echoAttachment(stub); | echoBase64AsAttachment(stub); | echoAttachmentAsBase64(stub); | echoAttachments(stub); } public static void echoAttachment(AttachmentsPortType stub) { | try | { | | System.out.print("echoAttachment: "); | | boolean result = Tests.echoAttachment(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoAttachment:" + | | ex.getMessage()); ex.printStackTrace(); | | if (java.lang.System.getProperty("DEBUG") != null) | | ex.printStackTrace(); | } } public static void echoBase64AsAttachment(AttachmentsPortType stub) { | try | { | | System.out.print("echoBase64AsAttachment: "); | | boolean result = Tests.echoBase64AsAttachment(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoBase64AsAttachment:" + | | ex.getMessage()); | | if (java.lang.System.getProperty("DEBUG") != null) | | ex.printStackTrace(); | } } public static void echoAttachmentAsBase64(AttachmentsPortType stub) { | try | { | | System.out.print("echoAttachmentAsBase64: "); | | boolean result = Tests.echoAttachmentAsBase64(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoAttachmentAsBase64:" + | | ex.getMessage()); | | if (System.getProperty("DEBUG") != null) | | ex.printStackTrace(); | } } public static void echoAttachments(AttachmentsPortType stub) { | try | { | | System.out.print("echoAttachments: "); | | boolean result = Tests.echoAttachments(stub); | | System.out.println(result ? "OK" : "failed"); | } | catch (java.lang.Exception ex) | { | | System.out.println("error invoking echoAttachments:" + | | ex.getMessage()); | | if (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 groupg.mimedoc; import javax.servlet.ServletException; public class ServerImpl extends AttachmentsPortType_ServiceSkeleton { public void init() throws ServletException { | super.init(); | | // Set the WSDL file property | _setProperty("xmlrpc.wsdl", "mime-doc.wsdl"); } public groupg.mimedoc.Binary echoAttachment(groupg.mimedoc.Binary in) throws java.rmi.RemoteException { | return in; } public groupg.mimedoc.Binary echoBase64AsAttachment(groupg.mimedoc.Binary in) throws java.rmi.RemoteException { | return in; } public groupg.mimedoc.Binary echoAttachmentAsBase64(groupg.mimedoc.Binary in) throws java.rmi.RemoteException { | return in; } public groupg.mimedoc.Binary[] echoAttachments(groupg.mimedoc.Binary[] item) throws java.rmi.RemoteException { | return item; } }
Copyright © 2003, 2004 Novell, Inc. All rights reserved. Copyright © 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.