nmukhi 2002/12/06 13:17:22
Added: java/samples/SimpleSOAP README.html StockquoteSOAP.wsdl
java/samples/SimpleSOAP/client/dynamic README.html
java/samples/SimpleSOAP/client/stub README.html Run.java
java/samples/SimpleSOAP/client/stub/com/themindelectric/www
NetXmethodsServicesStockquoteStockQuotePortType.java
Log:
Documentation, client code for simple stock quote sample using XMethods service
(dir structure follows new sample format)
Revision Changes Path
1.1 xml-axis-wsif/java/samples/SimpleSOAP/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">
<h1>
Web Services Invocation Framework:<br>
SimpleSOAP Sample</h1>
<p>This sample aims to demonstrate the invocation of the simple SOAP service, one
that has minimum functionality and uses only primitive schema types. We invoke the
ever-popular Stockquote service. For those unfamilar with it, this is a SOAP service
that offers one port type with a single operation. That operation takes as input a
stock symbol (that has schema type string) and returns a recent stock quote for that
company (the stockquote has schema type float). Most SOAP engines use this sample,
this one differs from the others in that you don't need to deploy the service at all;
instead we make use of the public Stockquote service developed and hosted by the good
folks at <a href="http://www.xmethods.net">XMethods</a>. The service URL, where you
can find details on the service implementation, etc. is <a
href="http://www.xmethods.net/ve2/ViewListing.po?serviceid=2">here</a>.</p>
<p>The <a href="StockquoteSOAP.wsdl">WSDL file</a> in this sample directory is
publicly available via the service URL and has been downloaded from there.</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%">
</body></html>
1.1 xml-axis-wsif/java/samples/SimpleSOAP/StockquoteSOAP.wsdl
Index: StockquoteSOAP.wsdl
===================================================================
<?xml version='1.0' encoding='UTF-8'?>
<definitions name='net.xmethods.services.stockquote.StockQuote'
targetNamespace='http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/'
xmlns:tns='http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/'
xmlns:electric='http://www.themindelectric.com/'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<message name='getQuoteResponse1'>
<part name='Result' type='xsd:float'/>
</message>
<message name='getQuoteRequest1'>
<part name='symbol' type='xsd:string'/>
</message>
<portType name='net.xmethods.services.stockquote.StockQuotePortType'>
<operation name='getQuote' parameterOrder='symbol'>
<input message='tns:getQuoteRequest1'/>
<output message='tns:getQuoteResponse1'/>
</operation>
</portType>
<binding name='net.xmethods.services.stockquote.StockQuoteBinding'
type='tns:net.xmethods.services.stockquote.StockQuotePortType'>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getQuote'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#getQuote'/>
<input>
<soap:body use='encoded'
namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded'
namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<service name='net.xmethods.services.stockquote.StockQuoteService'>
<documentation>net.xmethods.services.stockquote.StockQuote web
service</documentation>
<port name='net.xmethods.services.stockquote.StockQuotePort'
binding='tns:net.xmethods.services.stockquote.StockQuoteBinding'>
<soap:address location='http://66.28.98.121:9090/soap'/>
</port>
</service>
</definitions>
1.1 xml-axis-wsif/java/samples/SimpleSOAP/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>Setting up the CLASSPATH for running the sample: 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 samples.clients.DynamicInvoker
file:/mywsifinstallation/samples/SimpleSOAP/StockquoteSOAP.wsdl getQuote IBM</tt></p>
<hr width="100%">
</body></html>
1.1 xml-axis-wsif/java/samples/SimpleSOAP/client/stub/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 through a high level stub interface</h2>
<p>Setting up the CLASSPATH for running the sample: 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 yu can run this class, specifying on the command line the symbol for
the company whose stock quote you are interested in. For example, <br>
<tt>java samples.SimpleSOAP.client.static.Run 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 the one
whose name ended with <tt>PortType</tt> (this is the java interface corresponding to
the port type and is all that is required by WSIF).</p>
<hr width="100%">
</body></html>
1.1 xml-axis-wsif/java/samples/SimpleSOAP/client/stub/Run.java
Index: Run.java
===================================================================
package samples.SimpleSOAP.client.stub;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFException;
import java.rmi.RemoteException;
import com.themindelectric.www.NetXmethodsServicesStockquoteStockQuotePortType;
/**
* Simple class that Runs the SimpleSOAP sample using a pregenerated stub interface
* To use this class, provide a company stock symbol on the command line. WSIF
* should then invoke the SOAP service with this information, returning with a
recent
* stockquote.
* @author Nirmal K. Mukhi ([EMAIL PROTECTED])
*/
public class Run {
public static void main(String [] args) {
try {
if (args.length!=1) {
System.out.println("Usage: java samples.SimpleSOAP.client.stub.Run
<company symbol>");
System.exit(1);
}
// create a service factory
WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
// parse WSDL
WSIFService service =
factory.getService("file:/work/xml-axis-wsif/java/samples/SimpleSOAP/StockquoteSOAP.wsdl",
null,
null,
"http://www.themindelectric.com/wsdl/net.xmethods.services.stockquote.StockQuote/",
"net.xmethods.services.stockquote.StockQuotePortType");
NetXmethodsServicesStockquoteStockQuotePortType stub = null;
// create the stub
stub = (NetXmethodsServicesStockquoteStockQuotePortType)
service.getStub(NetXmethodsServicesStockquoteStockQuotePortType.class);
// do the invocation
// args[0] is the company symbol
float quote = stub.getQuote(args[0]);
System.out.println(quote);
} catch (WSIFException we) {
System.out.println("Error while executing sample, received an exception
from WSIF; details:");
we.printStackTrace();
} catch (RemoteException re) {
System.out.println("Error while executing sample, received an exception
due to remote invocation; details:");
re.printStackTrace();
}
}
}
1.1
xml-axis-wsif/java/samples/SimpleSOAP/client/stub/com/themindelectric/www/NetXmethodsServicesStockquoteStockQuotePortType.java
Index: NetXmethodsServicesStockquoteStockQuotePortType.java
===================================================================
/**
* NetXmethodsServicesStockquoteStockQuotePortType.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/
package com.themindelectric.www;
public interface NetXmethodsServicesStockquoteStockQuotePortType extends
java.rmi.Remote {
public float getQuote(java.lang.String symbol) throws java.rmi.RemoteException;
}