nmukhi 2002/12/12 06:41:02 Modified: java/doc samples.html java/samples/complexsoap/client/dynamic README.html java/samples/complexsoap/client/stub README.html java/samples/localjava README.html java/samples/localjava/client/dynamic README.html java/samples/simplesoap/client/dynamic README.html java/samples/simplesoap/client/stub README.html Added: java/samples/localjava/service README.html Log: Minor edits to READMEs - fixing sample package names. Also added README for localjava service. Revision Changes Path 1.5 +23 -50 xml-axis-wsif/java/doc/samples.html Index: samples.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/doc/samples.html,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- samples.html 12 Dec 2002 04:39:55 -0000 1.4 +++ samples.html 12 Dec 2002 14:41:01 -0000 1.5 @@ -11,18 +11,29 @@ Web Services Invocation Framework:<br> Samples</h1> <p>The WSIF distribution comes with a set of sample clients that demonstrate WSIF features. This document describes the features demonstrated by each sample, along with a guide to running them.</p> -<p>Before you run samples you need to make sure that you have required JAR files -and set CLASSPATH to contain both WSIF jar files and required JAR files. If you -use binary distribution of WSIF most of JAR files is already provided and -classpath script can be used to set CLASSPATH. You will only need to -download <b>activation.jar</b> and put it into <b>lib/activation</b> (<a href="../lib/activation/README.txt">see -README</a>), <b>mail.jar</b> and put it into <b>lib/javamail</b> (<a href="../lib/javamail/README.txt">see -README</a>) and <b>optionally</b> j2ee.jar or other jar file with J2EE APIs (<a href="../lib/j2ee/README.txt">see -README</a>) to compile EJB and JCA providers (all of those files must be -downloaded separately as they can not be distributed). To run samples you can -simply call <b>classpath script</b> (on Windows use classpath.bat on UNIX use -source classpath.csh if you use TCSH or source classpath.sh if you use BASH) and -you will have all required jar files on CLASSPATH.<p>The samples are present under the samples directory of your WSIF installation. Each sample resides in its own directory. Within each sample directory, you will find the following files (here, <em>SampleName</em> is the name of the sample): +<p>Before you run samples you need to make sure that you have required +JAR files and set CLASSPATH to contain both WSIF jar files and +required JAR files. If you use binary distribution of WSIF most of JAR +files is already provided and classpath script can be used to set +CLASSPATH. You will only need to download <b>activation.jar</b> +and put it into <b>lib/activation</b> (<a +href="../lib/activation/README.txt">see README</a>), <b>mail.jar</b> +and put it into <b>lib/javamail</b> (<a +href="../lib/javamail/README.txt">see README</a>) and +<b>optionally</b> j2ee.jar or other jar file with J2EE APIs and put it +into lib/j2ee (<a href="../lib/j2ee/README.txt">see README</a>). All +of those files must be downloaded separately as they can not be +distributed. j2ee.jar is required if you would like to compile EJB, +JCA or JMS providers or run samples that use those providers.</p> +<p>Once you have the necessary jar files, to run samples +you can simply call <b>classpath script</b> (on Windows use +classpath.bat on UNIX use source classpath.csh if you use TCSH or +source classpath.sh if you use BASH) and you will have all required +jar files on CLASSPATH.</p> +<p>The samples are present under the samples +directory of your WSIF installation. Each sample resides in its own +directory. Within each sample directory, you will find the following +files (here, <em>SampleName</em> is the name of the sample): <ul> <li><tt>SampleName.wsdl</tt>: WSDL file for sample</li> <li><tt>README.html</tt>: README file describing the sample, what WSIF features it demonstrates, and how to run it.</li> @@ -81,41 +92,3 @@ </table> <hr width="100%"> </body></html> - -<!-- <tr bgcolor="lightgreen"><td><h3>Invoking a simple SOAP service</h3> --> -<!-- <br><b>Stockquote sample</b> (under <tt>samples/stockquote</tt>) --> -<!-- <br><b>Value of sample</b>: Demonstrates how to invoke most common kind of WSDL described service - one with a SOAP binding. Note that same client can be used for a different binding as well, its code is <em>not</em> binding specific - welcome to WSIF! --> -<!-- <br><b>Running the sample</b>: Deploy the SOAP service as described <a href="#deployingsoap">here</a>. Once you have verified that the service is properly deployed, you can use any of the two clients to invoke the service. --> -<!-- <br><em>Running DII client</em>: Run the DynamicInvoker class, specifying as command line arguments the location of the WSDL file for the stockquote sample followed by the operation you wish to invoke and the symbol for the company whose stockquote you are interested in. For example, <tt>java samples.clients.DynamicInvoker file://mywsifinstallation/samples/stockquote/Stockquote.wsdl getQuote IBM</tt> --> -<!-- <br><em>Running proxy client</em>: Run the StockquoteClient class, specifying on the command line the symbol for the compnay whose stockquote you are interested in. For example, <tt>java samples.clients.StockquoteClient IBM</tt> --> -<!-- </td></tr> --> -<!-- <tr bgcolor="lightgrey""><td><h3>Exploiting multiple bindings offered by a service</h3> --> -<!-- <br><b>StockquoteMulti sample</b> (under <tt>samples/stockquotemulti</tt>) --> -<!-- <br><b>Value of sample</b>: Demonstrates how to exploit multiple bindings offered by a service, choose desired binding at runtime in a transparent way. Note that client code here is much the same as first sample. This shows that if our service was originally accessible over SOAP and we needed to switch this to JMS, our client code what not undergo any change at all. If it is accessible over both protocols, we can choose the one that is more convenient at the itme of invocation. --> -<!-- <br><b>Running the sample</b>: Deploy the SOAP service as described <a href="#deployingsoap">here</a>. Deploy the JMS-accessible service as described <a href="#deployingjms">here</a>. Once you have verified that the service is properly deployed and available through boths protocols, you can use any of the two clients to invoke the service. --> -<!-- <br><em>Running DII client</em>: Run the DynamicInvoker class, specifying as command line arguments the location of the WSDL file for the stockquotemulti sample followed by the port you wish to use, the operation you wish to invoke and the symbol for the company whose stockquote you are interested in. For example, <tt>java samples.clients.DynamicInvoker file://mywsifinstallation/samples/stockquote/Stockquote.wsdl JMSPort getQuote IBM</tt> --> -<!-- <br><em>Running proxy client</em>: Run the StockquoteMultiClient class, specifying on the command line the name of the port you wish to use followed by the symbol for the compnay whose stockquote you are interested in. For example, <tt>java samples.clients.StockquoteClient SOAPPort IBM</tt> --> -<!-- </td></tr> --> -<!-- <tr bgcolor="lightgreen"><td><h3>Invoking a service that uses custom types</h3> --> -<!-- <br><b>AddressBook sample</b> (under <tt>samples/addressbook</tt>) --> -<!-- <br><b>Value of sample</b>: Demonstrates how to invoke service that use custom types. Here, the service is offered as an EJB, and note that the client code is predictably much the same as first two samples. --> -<!-- <br><b>Running the sample</b>: Deploy the EJB as described <a href="#deployingejb">here</a>. --> -<!-- <br><em>Running DII client</em> --> -<!-- <br><em>Running proxy client</em> --> -<!-- </td></tr> --> -<!-- <tr bgcolor="lightgrey"><td><h3>Customising your invocation framework for maximum flexibility</h3> --> -<!-- <br><b>AddressBookMulti sample</b> (under <tt>samples/addressbookmulti</tt>) --> -<!-- Service WSDL will have complex types and a SOAP, Java, EJB, JMS, JCA binding. Client setup will plugin a custom implementation of WSIFServiceFactory and WSIFService that uses some heuristics to pick the best binding in the getPort call. --> -<!-- <br><b>Value of sample</b>: Demonstrates how to exploit multiple bindings, leaving client code unchanged while plugging in customisations into the WSIF framework. --> -<!-- <br><b>Running the sample</b>: --> -<!-- <br><em>Running DII client</em> --> -<!-- <br><em>Running proxy client</em> --> -<!-- </td></tr> --> -<!-- </table> --> -<!-- </p> --> -<!-- <p><a name="deployingsoap"><b>Deploying SOAP services</b>: You first need to run your favorite web server on your local machine, port 8080. In the future localhost:8080 will be a property loaded from wsif.test.propeerties. Find the deployment descriptor for your service (usually a file called DeploymentDescriptor.xml) in the sample directory and deploy the service. The way a service is deployed depends on the SOAP libraries you use. I use soap 2.2 on tomcat so I issue java org.apache.soap.server.ServiceManagerClient http://localhost:8080/soap/servlet/rpcrouter deploy "samples\services\addressbook\DeploymentDescriptor.xml". --> -<!-- </p> --> -<!-- <p><a name="deployingejb"><b>Deploying EJB services</b>:</p> --> -<!-- <p><a name="deployingjava"><b>Deploying Java services</b>:</p> --> -<!-- <p><a name="deployingjms"><b>Deploying JMS services</b>:</p> --> -<!-- <p><a name="deployingjca"><b>Deploying JCA services</b>:</p> --> \ No newline at end of file 1.3 +2 -13 xml-axis-wsif/java/samples/complexsoap/client/dynamic/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/complexsoap/client/dynamic/README.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README.html 11 Dec 2002 20:36:14 -0000 1.2 +++ README.html 12 Dec 2002 14:41:01 -0000 1.3 @@ -10,18 +10,7 @@ <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 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> +<p>After you have <a href="../../../../doc/samples.html">set up the CLASSPATH in your environment</a>, 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 complexsoap.clients.dynamic.Run 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.3 +1 -12 xml-axis-wsif/java/samples/complexsoap/client/stub/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/complexsoap/client/stub/README.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README.html 11 Dec 2002 20:36:14 -0000 1.2 +++ README.html 12 Dec 2002 14:41:02 -0000 1.3 @@ -10,19 +10,8 @@ <h2> Web Services Invocation Framework:<br> Invoking the ComplexSOAP Sample through a high level stub 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, jaxrpc.jar, saaj.jar</li> -</ul> -</p> <p>This directory contains a file called <tt>Run.java</tt> that contains the <tt>main</tt> method. This is the logic that uses the generated stub interface to run the sample. So you can run this class, specifying on the command line the location of the WSDL file for the sample followed by the zip code of interest. For example, <br> -<tt>java samples/complexsoap/Zip2Geo.wsdl samples.complexsoap.client.stub.Run 10005</tt></p> +<tt>java complexsoap.client.stub.Run samples/complexsoap/Zip2Geo.wsdl 10005</tt></p> <p>To generate the stub interface, you can use any tool that generates Java interfaces for WSDL services using their port type descriptions, such as WSDL2Java from Axis. WSIF assumes a correspondence between the generated Java interface and the WSDL port type that has its abstract description as specified in the JAX-RPC specification. This particular sample used WSDL2Java in the following way:<br> <tt>java org.apache.axis.wsdl.WSDL2Java ../../Zip2Geo.wsdl</tt><br> After the tool finished running, we deleted all the generated files except <tt>Zip2GeoSoap.java</tt> and <tt>LatLongReturn.java</tt> (Zip2GeoSoap is the java interface corresponding to the port type; LatLongReturn is the java representation of the complex schema type returned by the service - that is all that is required by WSIF). Note that the WSIF provider (in this case, Axis) automatically handles (de)serialization of the data that the user's code sees.</p> 1.3 +1 -0 xml-axis-wsif/java/samples/localjava/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/localjava/README.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README.html 11 Dec 2002 20:36:14 -0000 1.2 +++ README.html 12 Dec 2002 14:41:02 -0000 1.3 @@ -14,6 +14,7 @@ <p>In this particular sample, we describe an AddressBook service. For those unfamilar with it, this service offers a port type with three operations. Two of the operations add an entry to the address book, using slightly different styles for providing input information. The third operation queries the address book with a name. The service uses complex schema types for representing an address and a phone number.</p> <p>The abstract functionality is tied to a java binding that describes how a java class supports the abstract port type defined. This isn't a standard WSDL binding, instead this binding is defined as a part of WSIF; you can find details on how to write a java binding <a href="../../doc/wsdl_extensions/java_extension.html">here</a>.</p> <p>The <a href="AddressBook.wsdl">WSDL file</a> is in this sample directory.</p> +<p><a href="service/README.html">Here's</a> how this service is implemented.</p> <p><a href="client/dynamic/README.html">Here's</a> how to invoke this service dynamically using WSIF's dynamic invocation interface (DII).</p> <p><a href="client/stub/README.html">Here's</a> how to invoke this service by first generating the stub interface and using this directly through WSIF's dynamic proxy, thus hiding all WSIF specifics from the client code. Note that the stub interface used is the the service interface as defined by the JAX-RPC specification.</p> <hr width="100%"> 1.2 +2 -11 xml-axis-wsif/java/samples/localjava/client/dynamic/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/localjava/client/dynamic/README.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- README.html 11 Dec 2002 20:38:40 -0000 1.1 +++ README.html 12 Dec 2002 14:41:02 -0000 1.2 @@ -10,16 +10,7 @@ <h2> Web Services Invocation Framework:<br> Invoking the Java 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> -</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. This class will populate an addressbook with two names and then query each of them by invoking various operations supported by the service. To run this class, specify on the command line the location of the WSDL file for the service. For example, <br><tt>java samples.java.clients.dynamic.Run samples/java/AddressBook.wsdl</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> +<p>After you have <a href="../../../../doc/samples.html">set up the CLASSPATH in your environment</a>, to invoke this sample using WSIF's DII, run the <tt>Run</tt> class located in this directory. This class will populate an addressbook with two names and then query each of them by invoking various operations supported by the service. To run this class, specify on the command line the location of the WSDL file for the service. For example, <br><tt>java localjava.clients.dynamic.Run samples/java/AddressBook.wsdl</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/localjava/service/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> A Local Java class as a WSDL-described service</h2> Take a look at the <tt><a href="AddressBookImpl.java">AddressBookImpl.java</a></tt> file in this directory. <p>This class implements the address book service functionality advertised in <a href="../AddressBook.wsdl">the sample WSDL</a>. The implementation is as vanilla as it can be; the one feature of note is that we make this class implement the <tt>addressbook.wsifservice.AddressBook</tt> interface, which is the service interface as specified by JAX-RPC and generated using Axis' WSDL2Java tool. Note that the WSDL file refers to this class as the service endpoint in the <tt>java:address</tt> element.</p> <hr width="100%"> </body></html> 1.4 +1 -12 xml-axis-wsif/java/samples/simplesoap/client/dynamic/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/simplesoap/client/dynamic/README.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- README.html 12 Dec 2002 04:39:55 -0000 1.3 +++ README.html 12 Dec 2002 14:41:02 -0000 1.4 @@ -10,17 +10,6 @@ <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 DynamicInvoker class. Specify as command line arguments the location of the WSDL file for the stockquote sample followed by the operation you wish to invoke and the symbol for the company whose stockquote you are interested in. For example, <br><tt>java clients.DynamicInvoker samples/simplesoap/StockquoteSOAP.wsdl getQuote IBM</tt></p> +<p>After you have <a href="../../../../doc/samples.html">set up the CLASSPATH in your environment</a>, to invoke this sample using WSIF's DII, run the DynamicInvoker class. Specify as command line arguments the location of the WSDL file for the stockquote sample followed by the operation you wish to invoke and the symbol for the company whose stockquote you are interested in. For example, <br><tt>java clients.DynamicInvoker samples/simplesoap/StockquoteSOAP.wsdl getQuote IBM</tt></p> <hr width="100%"> </body></html> 1.4 +2 -12 xml-axis-wsif/java/samples/simplesoap/client/stub/README.html Index: README.html =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/samples/simplesoap/client/stub/README.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- README.html 12 Dec 2002 04:39:55 -0000 1.3 +++ README.html 12 Dec 2002 14:41:02 -0000 1.4 @@ -10,19 +10,9 @@ <h2> Web Services Invocation Framework:<br> Invoking the SimpleSOAP Sample through a high level stub 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, jaxrpc.jar, saaj.jar</li> -</ul> -</p> +First, you must <a href="../../../../doc/samples.html">set up the CLASSPATH in your environment</a>. <p>This directory contains a file called <tt>Run.java</tt> that contains the <tt>main</tt> method. This is the logic that uses the generated stub interface to run the sample. So you can run this class, specifying on the command line the location of the WSDL file for the sample and the symbol for the company whose stock quote you are interested in. For example, <br> -<tt>java samples.SimpleSOAP.client.static.Run samples/simplesoap/StockquoteSOAP.wsdl IBM</tt></p> +<tt>java simplesoap.client.stub.Run samples/simplesoap/StockquoteSOAP.wsdl IBM</tt></p> <p>To generate the stub interface, you can use any tool that generates Java interfaces for WSDL services using their port type descriptions, such as WSDL2Java from Axis. WSIF assumes a correspondence between the generated Java interface and the WSDL port type that has its abstract description as specified in the JAX-RPC specification. This particular sample used WSDL2Java in the following way:<br> <tt>java org.apache.axis.wsdl.WSDL2Java ../../StockquoteSOAP.wsdl</tt><br> After the tool finished running, we deleted all the generated files except <tt>NetXmethodsServicesStockquoteStockQuotePortType.java</tt> (this is the java interface corresponding to the port type and is all that is required by WSIF).</p>