# Jersey CDI Example

This example demonstrates how to develop RESTful web service with CDI managed beans and a Servlet 3.0 Web container.

## Running the Example

This example should work on any Java EE 7 compliant application server. It has been tested on a standalone GlassFish 4 instance. The easiest way to get the application running there is to build it and deploy as follows:

    mvn clean package
    $AS_HOME/asadmin deploy target/cdi-webapp.war

Another option, introduced in Jersey 2.15, is to run this example in Grizzly HTTP server. To get the application running there you just invoke the following command:

    mvn clean compile exec:java

Since Weld Servlet support is provided also for Apache Tomcat server, there is yet another way how to deploy the application. Use the `tomcat-packaging` maven profile to get the WAR archive packaged in a way that makes it ready for Tomcat 7+ deployment:

    mvn -Ptomcat-packaging clean package
    cp target/cdi-webapp.war $CATALINA_HOME/webapps

After you successfully deploy the application, visit the following URLs:

> Description | URL | Expected Results
> --- | --- | ---
> A managed bean with no use of injection whatsoever | `http://localhost:8080/cdi-webapp/helloworld` | `Hello World`
> Shows injection of context objects into the fields of a managed bean. | `http://localhost:8080/cdi-webapp/singleton` | `OK GET http://localhost:8080/cdi-webapp/singleton`
> Shows injection of context objects into the fields of a managed bean. | `http://localhost:8080/cdi-webapp/singleton/counter` |
> `0`: | standalone Grizzly (no resource injection support)
> | initial value, that gets incremented with each other request |
> `42`: | Java EE compliant AS
> Shows injection of context objects and path parameters into the fields of a managed bean. | `http://localhost:8080/cdi-webapp/other/C/D` | `INTERCEPTED: OK GET http://localhost:8080/cdi-webapp/other, c=C, d=D`
> Shows injection of path and query parameters into the fields of a managed bean. | `http://localhost:8080/cdi-webapp/echofield/b?a=a` | `ECHO a b`
> A managed bean that uses (but does not inject) a path parameter. | `http://localhost:8080/cdi-webapp/echo/a` | `ECHO a`