3Sample: Data Binding
====================

Introduction
============

This sample demonstrates how to use WSDL2Java generated code with Castor. 

Running of this sample assumes that you are running this within the extracted release folder (Axis2_HOME/samples/databinding).


Pre-Requisites
==============
 * Install Apache Ant 1.6.2 or later.
 * Please create a directory named lib under the directory that contains this file.
 * Download the following libraries and drop them into the new lib directory:
   * Version 1.0.4 of Castor jar from http://dist.codehaus.org/castor/1.0.4/castor-1.0.4.jar.
     (The latest releases of castor are available at http://www.castor.org/download.html, but this example may not run 	
     with versions later than 1.0.4)
   * A recent Xerces version from http://xerces.apache.org/.

You can achieve all three of the above steps by running "ant download.jars", but it will take some 
time to download those two jars, using ant.


Deploying the Service
=====================

You need to create the stock service Web service and deploy it. Typing ant generate.service or 
simply ant in the command prompt, will build the service against StockQuoteService.wsdl listed 
inside Axis2_HOME/samples/databinding and put it under Axis2_HOME/repository/services.

You need to then startup the server to deploy the service. Go to Axis2_HOME/bin folder and execute either
axis2server.bat (in Windows) or axis2server.sh(in Linux), depending on your platform.


Running the Client
==================

Typing the command "ant run.client" inside Axis2_HOME/samples/databinding runs the Axis2_HOME/samples/databinding/client/src/samples/databinding/StockClient.java class. You may use
the command scripts (as specified above) to do so. You need to supply 2 parameters to the command- url and symbol.

 * ant run.client -Durl=http://localhost:8080/axis2/services/StockQuoteService -Dsymbol=IBM
   Succeeds with a Price of 99.0. You will see "Price = 99.0"

When you call ant run.client with parameters, before running
client/src/samples/databinding/StockClient.java class, it does the following as well:

  * Generate the stubs (for the client) from the WSDL
  * Compile the client classes
  * Create a Jar of the client classes and copy it to build/client/StockService-test-client.jar

How It Works
==============

- Generate code giving -d none to get all the Axis2 APIs with OMElements.
- Create Castor objects for the schema given in the StockQuoteService.wsdl.
- Client API and the service uses those castor objects to get/set data.
- Get StAX events from the castor objects and construct OMElements from them. Those StAX events
  are fed into StAXOMBuilder which can create OM tree from it.
- Feed those OMElement in to generated code.

Note
==============
Sometimes, if you're having trouble running the client successfully, 
It may be necessary to clean the services repository before you generate the service, deploy it
and run the client. (i.e. delete services created from previous samples.)

Help
====
Please contact axis-user list (axis-user@ws.apache.org) if you have any trouble running the sample.

