Hi,
I apologize for having suspected OJB for the broker leak. It was
faulty code. We had a begin transaction with an end transaction missing in
our code. Good old thorough code review solved the problem.
Thanks and Regards Jose
----- Forwarded by Jose Thomas/India/IBM on 11/12/2002 06:06 PM -----
Jose Thomas/India/IBM@IBMIN
11/11/2002 08:17 PM
Please respond to "OJB Users List"
To: "OJB Users List" <[EMAIL PROTECTED]>
cc:
Subject: Right sequence of database opening sequence in a servlet
environment
Hi,
I am not getting the sequence right the sequence of operations for
a database open in a servlet environment. It would be great if any one can
lead me in the right direction.
I am using OJB 0.9.7 in a servlet only environment with no EJBs in WAS.
Data connection is through a Datasource and WAS connection pooling is used
ODMG APIs are used.
The sequence of operations is as follows
1. The following lines are done once and stored in static variables.
odmg = OJB.getInstance();
/*
* Create a new Database for the broker instance
*/
database = odmg.newDatabase();
2. The database open is done once for very request.
database.open()
The problem is that when the user makes a new request. I am using the same
static instance of database on which a newDatabase has been done and put
into the static variable. This throws a Database already open error even
though a Database.close have been called in the earlier invocation.
3. To avoid this I cast the Database instance to a DatabaseImpl instance
and checked the state using isOpen method and then called the
datbase.open. But then when I was using the Transcation. On getting the
new transaction odmg.newTransaction(). I get an error that Transaction
begun on a null database and on
transaction.begin gives a null pointer exception.
4. All these problems were avoided if I did a odmg.newDatabase(); for
every request. But this was increasing the persistence broker count.
with the message in the log file Already created persistence broker
instances:number, with the number increasing with each call to the
odmg.newDatabase();
I am not sure what to try next. Can any one tell me the right sequence of
calls. I tried the Beer4all code and the servlet example code in the test
src. Both didn't help me much.
Thanks in advance for the help
Jose