Round4/GroupG/MimeDoc

The standard WSDL description listed below can be found here. You can find additional information at the SOAP Builders round 4 site.

WSDL Interface

<?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>     

Client

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();
    |   }
    }
}

Server

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.