|
Sun GlassFish Enterprise Server |
This sample demonstrates the use of locking with Java Persistence APIs.
The application is built and deployed as a WAR file.
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
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.
Perform the following steps to build, deploy, and run the
application:
app_dir is the sample application base
directory: samples_install_dir/javaee6/jpa/locking.Change directory to app_dir.
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
app_dir> ant
clean
Perform the following steps to build, deploy, and run the application using NetBeans IDE:
samples_install_dir/javaee6/jpa/ directory, select locking, and click Open Project.locking and select Run to build, deploy, and run the project.If you have problems when running the application, refer the troubleshooting document.
Copyright © 2009 Sun Microsystems, Inc. All rights reserved.