Sun GlassFish Enterprise Server

Samples Main Page

# The Java Persistence API Locking Sample Application

This sample demonstrates the use of locking with Java Persistence APIs.

## Application Structure

The application is built and deployed as a WAR file.

### Web Module

The web module consists of:

- Two entities - User and Part. An User can be either Consumer or Supplier of the part that it has reference to.

- A session bean that acts as a facade to operate on these entities

- A servlet that facilitates calling into above session bean

### Test Client

The Test client consist of

- A Java SE client with main(). The client calls into the servlet to initialize data and then simulates parallel update operations using Optimistic Locking and Pessimistic Locking. You can observe that some update operations using optimistic locking fails while all update operations using pessimistic locking passes. However, the time it takes to update using pessimistic locking is much higher than that taken using optimistic locking. You can change NumConsumers, NumSuppliers and NumParts to observe this behavior under various load condition.

Optimistic Locking offers better concurrency but can result in few transaction failures. Where as using Pessimistic Locking reduces concurrency with no transaction failures. Please keep this point in mind while making locking choices for your application.

## 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/javaee6/jpa/locking`.
3. ````Change directory to `app_dir.
   `
4. Build, deploy, and run the sample application using the `all` target.``

`app_dir> ant all`

You can replace the `ant all` command with the following set of commands:

`app_dir> ant default` compiles and packages the application

`app_dir> ant deploy` deploys it to application server

`app_dir> ant run` runs the test java client

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

   `app_dir> ant clean`

## Building, Deploying, and Running the Application in NetBeans IDE

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

1. Refer to the common build instructions for setting up NetBeans IDE and Sun GlassFish Enterprise Server.
2. In the NetBeans IDE, choose File → Open Project (Ctrl-Shift-O), navigate to the `samples_install_dir/javaee6/jpa/` directory, select `locking`, and click Open Project.
3. In the Projects tab, right click `locking` and select Run to build, deploy, and run the project.

## Troubleshooting

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

Copyright © 2009 Sun Microsystems, Inc. All rights reserved.