nmukhi      2002/12/09 13:47:04

  Added:       java/samples/ComplexSOAP/client/dynamic README.html Run.java
  Log:
  Client using WSIF DII for complex type sample
  
  Revision  Changes    Path
  1.1                  
xml-axis-wsif/java/samples/ComplexSOAP/client/dynamic/README.html
  
  Index: README.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="Author" content="Nirmal Mukhi">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title>Web Services Invocation Framework: Samples</title>
  <link rel="stylesheet" href="wsif.css" type="text/css"></head>
  
  <body alink="#0000ff" bgcolor="#ffffff" leftmargin="2" topmargin="2" marginwidth="2" 
marginheight="2">
  
  <h2>
  Web Services Invocation Framework:<br>
  Invoking the SimpleSOAP Sample using WSIF's dynamic invocation interface</h2>
  <p>You must have the following on your classpath:
  <ul>
    <li>wsif.jar</li>
    <li>wsifsamples.jar</li>
    <li>A JAXP compliant XML parser, such as Xerces</li>
    <li>wsdl4j.jar</li>
    <li>qname.jar</li>
    <li>axis.jar (since by default WSIF uses its Axis provider to invoke SOAP 
services)</li>
    <li>JAR files required by Axis - log4j.jar, commons-logging.jar, 
commons-discovery.jar, jaxrpc.jar, saaj.jar</li>
  </ul>
  </p>
  <p>After you have set up the CLASSPATH in your environment, to invoke this sample 
using WSIF's DII, run the <tt>Run</tt> class located in this directory. Specify as 
command line arguments the location of the WSDL file for the service and the zip code 
you are interested in. For example, <br><tt>java 
samples.ComplexSOAP.clients.dynamic.Run 
file:/mywsifinstallation/samples/ComplexSOAP/Zip2Geo.wsdl 10005</tt></p>
  <p>Look at the code in the <tt>Run.java</tt> file in this directory to see how to 
use WSIF's DII yourself. Note that the <tt>DynamicInvoker</tt> class we used to <a 
href="../../../SimpleSOAP/client/dynamic/README.html">invoke the SimpleSOAP sample 
dynamically</a> cannot be used for this one since the <tt>DynamicInvoker</tt> as it 
stands now is limited to invocation of services using primitive schema types only.</p>
  <hr width="100%">
  </body></html>
  
  
  
  1.1                  xml-axis-wsif/java/samples/ComplexSOAP/client/dynamic/Run.java
  
  Index: Run.java
  ===================================================================
  package samples.ComplexSOAP.client.dynamic;
  
  import javax.xml.namespace.QName;
  import org.apache.wsif.WSIFService;
  import org.apache.wsif.WSIFMessage;
  import org.apache.wsif.WSIFPort;
  import org.apache.wsif.WSIFOperation;
  import org.apache.wsif.WSIFServiceFactory;
  
  import com.cdyne.ws.LatLongReturn;
  
  public class Run {
      public static void main(String [] args) throws Exception {
        // args[0] is the zip code
        if(args.length!=2) {
            System.out.println("Usage: java samples.ComplexSOAP.client.dynamic.Run 
<wsdl location> <zip code>");
            System.exit(1);
        }
        // create a service factory
          WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
        
        WSIFService service = factory.getService(args[0], null,
                                                 null, "http://ws.cdyne.com";, 
                                                 "Zip2GeoSoap"); 
        // map types
        service.mapType(new QName("http://ws.cdyne.com","LatLongReturn";),
                        Class.forName("com.cdyne.ws.LatLongReturn"));
  
        // get the port
        WSIFPort port = service.getPort();
        // create the operation
        WSIFOperation operation = port.createOperation("GetLatLong");
        // create the input, output and fault messages associated with this operation
        WSIFMessage input = operation.createInputMessage();
        WSIFMessage output = operation.createOutputMessage();
        WSIFMessage fault = operation.createFaultMessage();
        // populate the input message
        input.setObjectPart("zipcode",args[1]);
        input.setObjectPart("LicenseKey","");
        // do the invocation
        if (operation.executeRequestResponseOperation(input, output, 
                                                      fault)) {
            // invocation succeeded, extract information from output 
            // message
            LatLongReturn zipInfo = (LatLongReturn) 
output.getObjectPart("GetLatLongResult");
            System.out.println("This zip code is in 
"+zipInfo.getCity()+","+zipInfo.getStateAbbrev()+
                               " in "+zipInfo.getCounty()+" county\n"+
                               "It extends from longitude 
"+zipInfo.getFromLongitude()+" to longitude "+
                               zipInfo.getToLongitude()+"\n and from latitude 
"+zipInfo.getFromLatitude()+
                               " to latitude "+zipInfo.getToLatitude());
        } else {
            System.out.println("Invocation failed");
            // extract fault message info
        }
      }
  }
  
  
  


Reply via email to