com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links' is unknown.

JAX-RS Advanced

This sample shows some advanced functionalities of REST-based Web Services using JAX-RS (JSR-311). Please note that this sample was called jaxrs_sample_02 in the AS 5.1.0 release. It has been renamed to provide better clarity.


Building the sample 

  1. Open a command line, and navigate to the <AS_HOME>\samples\Jaxws-Jaxrs\jaxrs_starbucks_service directory.
  2. Run the relevant command to deploy the web app:
    • Using Maven

      1. Create a WAR file for the sample using the following command:

        mvn clean install
      2. Deploy the generated WAR file on WSO2 AS with the related logs on the console:

        mvn -Pdeploy
    • Using Ant

      ant
  3. Start  the WSO2 Application Server by executing one of the following commands, where <PRODUCT_HOME> is the directory where you installed the product distribution:

    OSCommand
    On Windows
    <PRODUCT_HOME>\bin\wso2server.bat --run
    On Linux/Solaris
    sh <PRODUCT_HOME>/bin/wso2server.sh  
  4. Log in to the management console and click List on the Main menu, under Manage/Applications. This opens the Running Applications page. The deployed applications will be listed here.

  5. You can open the required web application by clicking the Find Services action.

Running the sample

This JAX-RS webapp provides following services:    

  • A RESTful Starbucks outlet service is provided on URL http://localhost:9763/jaxrs_starbucks_service/services/Starbucks_Outlet_Service (say serviceURL). Users access this URI to perform operations of drink orders.      
  • A HTTP GET request to URL ${serviceURL}/orders/123 returns a drink order added with the generated id 123. The JSON document returns: 

    {
       "Order":{
           "orderId":"123",
           "drinkName":"Vanilla Flavored Coffee",
           "additions":"Milk",
           "locked":false
       }
    }
    
  • A HTTP POST request to URL ${serviceURL}/orders  with the following data adds an order. 

    <Order>
       <drinkName>Mocha Flavored Coffee</drinkName>
       <additions>Caramel</additions>
    </Order>
  • An id for this order is generated at server-side and returned in the response.   The response body looks like the following in JSON format. 

    {"Order":{
       "additions":"Caramel",
       "drinkName":"Mocha Flavored Coffee",
       "locked":false,
       "orderId":"ee1a9ec2-c8a5-4afe-8585-74df591f9990"
    }}
  • A HTTP PUT request to URL ${serviceURL}/orders with the following data, where the 'orderId' is set to the one received in the response body when the order was added: 

    {
       "Order":{
           "orderId":"ee1a9ec2-c8a5-4afe-8585-74df591f9990",
           "additions":"Chocolate Chip Cookies"
       }
    }
  • It updates the 'additions' of the order "ee1a9ec2-c8a5-4afe-8585-74df591f9990" from "Caramel" to "Chocolate Chip Cookies". The response will be in XML-format as follows.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
       <Order>
          <additions>Chocolate Chip Cookies</additions>
          <drinkName>Full Leaf Green Tea</drinkName>
          <locked>true</locked>
          <orderId>ee1a9ec2-c8a5-4afe-8585-74df591f9990</orderId>
       </Order>
  • A HTTP DELETE request to URL ${serviceURL}/orders/ee1a9ec2-c8a5-4afe-8585-74df591f9990 with an empty request body will delete the order details of order "ee1a9ec2-c8a5-4afe-8585-74df591f9990".

The client code demonstrates how to send HTTP GET/POST/PUT/DELETE requests whereas the server code demonstrates how to build a RESTful endpoint through JAX-RS (JSR-311) APIs.

com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links2' is unknown.