ZipCode JAX-WS Sample
======================================
This sample demonstrates how to access an existing web service using JAX-WS/JAXB generated java interfaces/classes.

The README in the samples directory (the directory above this) provides 
general instructions about building and running samples. Take a look there 
first. 

If you just want to run it to see what happens open a command prompt, navigate
to this sample directory and do:

ant run

OR if you don't have ant, on Windows do

java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-zipcode-jaxws.jar zipcode.ZipCodeClient

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-zipcode-jaxws.jar zipcode.ZipCodeClient


Sample Overview
---------------
The sample provides a single component exposing a Web resource.

zipcode-jaxws/
  src/
    main/
      java/

      resources/
        ZipCode.composite                 - the SCA assembly for this sample
  zipcode-jaxws.png                       - a pictorial representation of the 
                                            sample .composite file
  build.xml                               - the Ant build file
  pom.xml                                 - the Maven build file        


Building And Running The Sample Using Ant
-----------------------------------------
With the binary distribution the sample can be built and run using Ant using the 
following commands

cd zipcode-jaxws
ant compile
ant run

You should see the following output from the run target.

run:
     [java] 14-Jan-2008 14:28:07 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:8080/myWeb/*
     [java] Sample server started (press enter to shutdown)
     [java]
     [java] To get the Web resource, point your Web browser to the following add
ress:
     [java] http://localhost:8080/myWeb/index.html
     [java]
     
As this point the Web resource is exposed by a web server started automatically
by the SCA runtime. To stop the server just press enter.

*** Note: This sample uses external services hosted at www.webservicex.net, these
          services are occasionally not available which causes this sample to hang.
          If that happens please try again later.


Building The Sample Using Maven 
-------------------------------------------
With either the binary or source distributions the sample can be built using
Maven as follows.

cd zipcode-jaxws
mvn

