Java EE 7 SDK 

Samples Main Page

The Servlet CDI Sample Application

This example application demonstrates the use and injection of request-scoped and session-scoped CDI beans in a web application. The example shows how to implement a simple user authentication scheme.

Description

The demo uses a log-in servlet to authenticate a user with a username and password. The username and password values are saved in a request-scoped Credentials bean. The session-scoped LoginHandler bean checks the credentials provided in the current request.

The code snippet below shows how to decorate the Credentials and LoginHandler beans with the RequestScoped and SessionScoped annotations to indicate to the CDI runtime that these beans are request-scoped and session-scoped respectively. The CDI runtime automatically manages the lifecycle of these beans. For example, a request-scoped Credentials bean can be injected into a session-scoped LoginHandler bean, and the CDI runtime ensures that the right request-scoped state is available inside the session-scoped bean.

@RequestScoped
public class Credentials {...}
@SessionScoped
public class LoginHandler implements Serializable {
    // Get the request scoped Credentials associated
    // with this user.
    @Inject Credentials credentials;
}

The LoginServlet servlet obtains the request-scoped Credentials bean and the session-scoped LoginHandler bean using field-based injection as shown in the code snippet below. In the service method, the servlet populates the Credentials bean with the values from the form and invokes a log-in method on the LoginHandler bean to handle the authentication.

@WebServlet(name="LoginServlet",urlPatterns={"/LoginServlet"})
public class LoginServlet extends HttpServlet { // Inject the Credentials request-scoped bean. @Inject Credentials credentials; // Inject the Login session-scoped bean. @Inject LoginHandler login; }

Building, Deploying, and Running the Application

Perform the following steps to build, deploy, and run the application:

  1. Set up your build environment and configure the application server with which the build system has to work by following the common build instructions.
  2. app_dir is the sample application base directory: samples_install_dir/javaee7/cdi/cdi-servlet.
  3. Change directory to app_dir.
  4. Build, deploy, and run the sample application using the run outcome.

    mvn clean verify cargo:run

  5. Use the clean outcome to undeploy the sample application and to remove the temporary directories such as build and dist.

    mvn clean

Troubleshooting

If you have problems when running the application, refer to the troubleshooting document.



Copyright © 1997-2013 Oracle and/or its affiliates. All rights reserved.