Using Criteria API in DayTrader
A current DayTrader project implementation in Apache Geronimo contains several JPQL queries. These can easily be converted to JPA Criteria API queries. A sample with this conversion can be created to run on either the Apache Geronimo server or the WebSphere Application Server with the built-in Derby database.
Downloading DayTrader
You must have Subversion installed in order to download the DayTrader implementation.Subversion can be downloaded from http://subversion.apache.org/packages.html. Use the 2.1.3 version of DayTrader for this sample. Follow the following steps:
- Create a root directory for the download. For this example, we will use a directory called DayTrader.
- Create subdirectories branches/2.1.3 under the DayTrader directory
- cd to DayTrader
- Issue the following subversion command:
svn checkout https://svn.apache.org/repos/asf/geronimo/daytrader/branches/2.1.3 branches/2.1.3
Build DayTrader
You must have maven installed in order to build DayTrader. Maven can be downloaded from http://maven.apache.org/download.html. Unzip the file to a directory and run mvn.bat|.sh in the bin subdirectory to install. Add the bin subdirectory to you system path.
Maven needs a repository. Typically it is at the following:
- Windows - C:\Documents and Settings\<userid>\.m2\repository
- Linux/unix - ~/.m2/repository
From the DayTrader/branches/2.1.3 directory, type "mvn clean install" to build the project. (Note: If you see errors that say "java.util.zip.ZipException: error in opening zip file", ignore them for this exercise.)
Apply the DayTrader Patch
The following patch can be applied using a system or downloaded patch utility. (For example, you can get a patch utility for Windows from http://gnuwin32.sourceforge.net/packages/patch.htm.)
for Geronimo - daytrader_geronimo.patch
for WebSphere - daytrader_websphere.patch
Download the appropriate patch and go to the DayTrader/branches.2.1.3 directory to apply it. For example, with the patch utility mentioned above, you can type:
patch -p0 -i <path-to>/daytrader_geronimo.patch
After you have applied the patch, you can see the changes from JPQL to the Criteria API in the java class org.apache.geronimo.samples.daytrader.ejb3.TradeSLSBBean. The changes are in the following 4 methods:
- getMarketSummary()
- getClosedOrders()
- getAllQuotes()
- getHoldings()
(Note: If you view these changes in eclipse, and you have previously run "mvn eclipse:eclipse" to setup eclipse projects, you'll have to run this command again in order for this file to compile.)
You can also Apply an Eclipse Patch
Re-create the DayTrader ear file
From the DayTrader/branches/2.1.3 directory, type "mvn clean install" to build the project.
Run DayTrader on Geronimo
This writeup assumes some familiarity with Apache Geronimo. The download and documentation can be found at http://geronimo.apache.org.
Install and start the Geronimo server
Add jpa2 plugins from repository http://geronimo.apache.org/plugins/openjpa2. One way to do this is the following:
- Go to the Geronimo console at http://<host>:8080/console and logon
- Select plugins
- Click on Add Repository and add http://geronimo.apache.org/plugins/openjpa2
- Click on Update Repository List
- Make sure the new repository is selected. Then click on Show Plugins in selected repository. On that panel:
- Select GeronimoPlugins, OpenJPA2::CAR 2.1.3-SNAPSHOT and GeronimoPlugins, OpenJPA2::Deployer 2.1.3-SNAPSHOT
- Click on Install
- On the next screen, click on Install
Deploy the DayTrader application. This can be done through the console as follows:
- Click on Deploy New
- For Archive, browse to DayTrader/branches/2.1.3/modules/ear/target/daytrader-ear-2.1.3.ear
- For Plan, browse to DayTrader/branches/2.1.3/plans/dayTrader-derby-plan.xml
- Check Start app after install
- Click on Install
Re-start the server.
Make sure that the system module, org.apache.geronimo.configs/axis-deployer/2.1.5/car, is running.
Run DayTrader:
- Go to http://<host>:8080/daytrader/
- Click on the Configuration tab and click on (Re)-create DayTrader Database Tables and Indexes
- Click on the Configuration tab and click on (Re)-populate DayTrader Database
- Click on the Trading & Portfolios tab, login, and start trading