incubator-empire-db-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rainer Döbele <doeb...@esteam.de>
Subject Re: How to use it with web application?
Date Thu, 25 Sep 2008 10:34:19 GMT
Hi David,

in a web-application you should ideally work with connection pooling, which is usually done
by the application server (i.e. Apache-Tomcat).

We recommend the following:

1. create an Application object which is instantiated and initialized once when the web-application
is loaded in the web application server. This can be done via a custom filter class registered
in the web.xml definition file of your web-application. The application object is a singleton.

2. use a JNDI context to access a datasource provided by the application server. When initializing
your application obtain a Connection from the data source and initialize your DB-Objects (create
the driver, open the database, check the schema, etc.)

3. for each request, obtain a connection from the pool which you can then pass to the appropriate
Empire-db function. When the request finished close the connection which will effectively
return it to the pool.

I recommend downloading and looking at our Empire-Struts2 Example Application called DBWebSample
provided with the distribution of the empire-struts2-extentions. Even if you don't intend
to use Struts2 as your web application framework it gives a good idea on how to use Empire-db
in a web application. You should particularly look the init() method of the SampleApplication
class. However the sample application does not implement connection pooling - but it can be
easily added.

Hope this is the kind of answer you expected.

Regards
Rainer

David Marko wrote:
> 
> Hello,
> can anyone share some common scenario on how to initialise necessary
> things in web application using
> e.g. SpringFramework?
> 
> ##### Using the code from the EmpireDB Site:
> config.init((args.length > 0 ? args[0] : "config.xml"));
> // STEP 1: Get a JDBC Connection
> Connection conn = getJDBCConnection();
> In step two the sample creates and initializes a database driver object
> for the target DBMS. This is
> HSQLDB by default.
> 
> // STEP 2: Choose a driver
> DBDatabaseDriver driver = getDatabaseDriver(config.getDatabaseProvider());
> Then in step three the database object is opened using the driver. Only
> when opened, other methods
> of the database object may be used. Finally we check whether or not our
> database objects exist.
> 
> // STEP 3: Open Database and check if tables exist
> db.open(driver, conn);
> databaseExists(conn);
> In order to check existence of the database the sample simply performs a
> query on the Departments
> table ("select count(*) from DEPARTMENTS") using the following code:
> 
> DBCommand cmd = db.createCommand();
> cmd.select(db.DEPARTMENTS.count());
> db.querySingleInt(cmd.getSelect(), -1, conn);
> ###
> 
> ... should/can be the conn and db initialised using some singleton pattern
> and used within the
> application in this way?
> 
> Thanks for info,
> David

Mime
View raw message