RESTful Hello World Demo 
========================

This demo shows REST-based Web Services using the HTTP binding and JAX-WS 
Provider/Dispatch. The REST server provides the following services: 

A RESTful customer service is provided at the following URL:

   http://localhost:9000/customerservice/customer. 

You can access this URL to query or update customer info.

A HTTP GET request to http://localhost:9000/customerservice/customer returns a 
list of customer hyperlinks. This allows client to navigate through the 
application states. The following XML document is returned:

<Customers>
  <Customer href="http://localhost/customerservice/customer?id=1234">
      <id>1234</id>
  </Customer>
  <Customer href="http://localhost/customerservice/customer?id=1235"> 
      <id>1235</id>
  </Customer>
  <Customer href="http://localhost/customerservice/customer?id=1236"> 
      <id>1236</id>
  </Customer>
</Customers>

A HTTP GET request to http://localhost:9000/customerservice/customer?id=1234 
returns a customer instance whose ID is 1234, as shown below:

<Customer>
  <id>1234</id>
  <name>John</name>
  <phoneNumber>123456</phoneNumber>
</Customer>

A HTTP POST request to http://localhost:9000/customerservice/customer with the 
following XML updates customer 1234 with the data provided:

<Customer>
  <id>1234</id>
  <name>John</name>
  <phoneNumber>123456</phoneNumber>
</Customer>

The client code demonstrates how to send HTTP POST with XML data using 
JAX-WS Dispatch and how to send HTTP GET using URL.openStream(). The 
server code demonstrates how to build a RESTful endpoints through 
JAX-WS Provider interface.


Please review the README in the samples directory before continuing.


Prerequisites
------------

$SUBSTITUTE_PREREQ$



Building and running the demo using ant
---------------------------------------

From the samples/restful directory, use the following commands 
to build and run the demo on either UNIX or Windows:

  ant build
  ant server
  ant client
    
To remove the code generated from the WSDL file and the .class files, run:

  ant clean



Building the demo using wsdl2java and javac
-------------------------------------------

From the samples/restful directory, first create the target directory 
build/classes and then compile the provided client and server applications with 
the commands:

For UNIX:  

  mkdir -p build/classes
  
  export CLASSPATH=$CLASSPATH:./build/classes
  javac -d build/classes src/demo/restful/client/*.java
  javac -d build/classes src/demo/restful/server/*.java

For Windows:

  mkdir build\classes
    (Use backslashes.)

  set classpath=%classpath%;.\build\classes
  javac -d build\classes src\demo\restful\client\*.java
  javac -d build\classes src\demo\restful\server\*.java

Finally, copy resource files into the build/classes directory with the commands:

For UNIX:    

  cp ./src/demo/restful/client/*.xml ./build/classes/demo/restful/client
  cp ./src/demo/restful/server/*.xml ./build/classes/demo/restful/server

For Windows:

  copy src\demo\restful\client\*.xml build\classes\demo\restful\client
  copy src\demo\restful\server\*.xml build\classes\demo\restful\server


Running the demo using java
---------------------------

From the samples/restful directory run the following commands on a single 
command line.

For UNIX (use forward slashes):

    java -Djava.util.logging.config.file=$$SUBSTITUTE_HOME$/etc/logging.properties
         demo.restful.server.Server &

    java -Djava.util.logging.config.file=$$SUBSTITUTE_HOME$/etc/logging.properties
         demo.restful.client.Client

The server process starts in the background.  After running the client, use the 
kill command to terminate the server process.

For Windows (use either forward or backslashes):

  start 
    java -Djava.util.logging.config.file=%$SUBSTITUTE_HOME$%\etc\logging.properties
         demo.restful.server.Server

    java -Djava.util.logging.config.file=%$SUBSTITUTE_HOME$%\etc\logging.properties
       demo.restful.client.Client

A new command windows opens for the server process. After running the client, 
terminate the server process by issuing Ctrl-C in its command window.

