|Home > Documentation > Sample applications > Simple database access sample application|
This article guides you through the JDBC features in the Apache Geronimo appplication server. To demonstrate the JDBC features, we use a simple Inventory application which has JSP, Servlets to handle web related features and inbuilt Derby as database.
Inventory Application will use the Service Provider Interface(SPI) method to access it's database. In this method the application uses a JDBC DataSource interface to establish connections with the database. This is the preferred access method for a J2EE application for several reasons:
After reading this article you should be able get the best out of the JDBC features of Geronimo, such as defining database pools and using DataSources to access databases.
This article is organized in to following sections.
JDBC implementation in application servers vary from application server to other. Following table gives a feature list of JDBC in Apache Geronimo.
|JDBC access||Geronimo does not have any direct integration with JDBC but supports access through the generic J2CA framework. The TranQL project has J2CA adapters for various databases.|
|JCA implementation||Geronimo supports the JCA 1.5 specification and is backward compatible to the JCA 1.0 specification.|
|Data sources supported||TranQL has generic wrappers for each data sources.|
|Data source failover||TranQL has specialized drivers for certain databases (including Apache Derby, Oracle and DB2) that provide a tighter integration with the advanced features of the driver.|
It is at this level that features such as load-balancing and failover would be provided. You can also use a C-JDBC wrapper for providing database clustering and failover.
|XA support||Supports XA transactions, Local Transactions, and No transaction.|
|Connection Manager Configurability||The J2CA framework is interceptor based which allows different parts of the connection framework to be plugged in.|
|JTA implementation||Transaction support is provided through Geronimo Specific Transaction Managing Framework and HOWL.|
|Connection pooling and management||Custom Geronimo Code and TranQL used for connection pooling and management.|
|Legacy driver support||Geronimo provides this through the TranQL- connector JDBC to JCA wrapper in Geronimo. Supports JDBC 3.0 and 2.1.|
The Inventory application in this article only supports three basic usecases of such applications.
The Inventory Web Application has following list of pages
The following figure illustrates the application flow.
Welcome page of the application acting as a notice board which displays current stock of each item. Through the Welcome page users can access Add Item, Receive Goods or Issue Goods Pages. Upon successful completion of each activity, the page will be redirected back to the Welcome page with updated stock information. Add Item helps to define items in the stock, then 0 number of items will be added to the stock. Receive and Issue Goods pages represent Goods Receiving and Issuing activities of the application respectively.
The Inventory application consist of following list of packages and classes.
The list of web application files in the application is depicted in the following.
Application defines a datasource with the help of geronimo-web.xml and web.xml files. geronimo-web.xml add a link to the database pool that is packaged with the EAR file.
Following is the web.xml of the Inventory application. It uses same name as in the geronimo-web.xml, which is used to create the datasource.
geronimo-application.xml tells the application that there is a database pool that needs to be deployed as well. The db pool is defined in InventoryPool.xml and the driver that is needs in order to be deployed is the tranql-connector-ra-1.3.rar file--these two files will reside on the top level layer of the resultant EAR file.
Next important phase of the application is accessing defined datasource from the source code. This part is handled by the DBManager class.
The sample database that is being used to demonstrate this application is in-built Derby database. The name of the sample database is InventoryDB and it consists of two tables, namely ITEM and ITEM_MASTER. The fields for each of these tables are described below.
|ITEM||ITEM_ID (PRIMARY KEY)|
|ITEM_MASTER||ITEM_ID (PRIMARY KEY)|
The ITEM table stores the data related to the items while ITEM_MASTER stores the quantity in hand of each item.
The tools used for developing and building the Inventory sample application are:
Apache Derby, an Apache DB subproject, is a relational database implemented in Java. Its footprint is so small you can easily embed it in any Java-based solution. In addition to its embedded framework, Derby supports a more familiar client/server framework with the Derby Network Server.
Maven is a popular open source build tool for enterprise Java projects, designed to take much of the hard work out of the build process. Maven uses a declarative approach, where the project structure and contents are described, rather than the task-based approach used in Ant or in traditional make files, for example. This helps enforce company-wide development standards and reduces the time needed to write and maintain build scripts. The declarative, lifecycle-based approach used by Maven 1 is, for many, a radical departure from more traditional build techniques, and Maven 2 goes even further in this regard. Maven 2 can be download from the following URL:
Back to Top
Download the Inventory application from the following link:
After decompressing the given file, the inventory directory is created.
You can checkout the source code of this sample from SVN:
Configuration of the application consists of creating the database and defining the connection pool to access it.
After starting Apache Geronimo log into the console and follow the given steps to create the InventoryDB database.
Inventory application comes with an pom.xml script to help users to build from source code. Use the command prompt to navigate into the inventory directory and just give mvn install command to build. It will create the inventory-ear-2.0-SNAPSHOT.ear file under the inventory folder. Now, you are ready to deploy Inventory web application in to the Geronimo Application server.
Deploying sample application is pretty straight forward as we are going to use the Geronimo Console.
To test the sample application, open a browser and type http://localhost:8080/inventory. The Welcome page of Inventory application which is acts as a notice board will be loaded.
The user can directly access Add Items, Receive Goods and Issue Goods functionalities from the Welcome page.
This article has shown you how to use JDBC features inside the Geronimo Application Server. You followed step-by-step instructions to build, deploy and test a sample application to elaborate these features.
The highlights of this article are: -