Hi,

Create a new Jira issue at http://jira.codehaus.org/browse/CASTOR, and attach 
your test case.

Regards
Werner Guttmann
Castor JDO, committer

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Sent: Dienstag, 17. Jänner 2006 14:40
> To: [email protected]
> Subject: [castor-user] Problem with Castor in a J2EE Environment
> 
> Helo,
> 
> Forgive the delay. I am really sorry I have not answered yet. 
> But I have been trying to make a simple example that 
> demonstrates the problem explained a week ago.
> 
> However I do not know how can I attach the example.
> 
> Thanks in advance,
> 
> Raúl.
> 
> P.D.: We use Shared locking.
> 
> --------------------------
> 
> I'd be very interested in knowing what castor locking you're 
> using on the object that's having the problem, as well;
> 
> F.ex.,  DbLocked would behave differently, under these 
> circumstances, then shared, I'm guessing.
> 
> On 5 Jan 2006, at 15:36, Ralf Joachim wrote:
> 
> > Hi Raúl,
> >
> > In local mode the cache is updated and the locks are 
> released at the 
> > end of the commit() method. In global mode (transaction managed by 
> > J2EE
> > container) the container have to call beforeCompletion() and
> > afterCompletion() methods of javax.transaction.Synchronization 
> > interface when the global transaction is commited or rolled back. 
> > These interface is implemented in 
> > org.exolab.castor.jdo.engine.DatabaseImpl. The 
> implementation of the 
> > interface methods normally should update castor's cache and release 
> > the locks.
> >
> > According to what I have found so far the locks should be 
> released if 
> > the global transaction is committed between your 2 
> operations. If this 
> > is not the case as you described in your mail, that seams 
> to be a bug 
> > that we have not recognized so far.
> >
> > I suggest you to create a new issue in jira and, as this 
> may be quite 
> > difficult to find, attach a test case that allows us to 
> reproduce the 
> > problem ourself.
> >
> > Regards
> > Ralf
> > Castor JDO, committer
> >
> >
> > rsanz <at> cein.es schrieb:
> >> Helo,
> >>
> >> We have been using castor 0.9.5 in oc4j (an oracle container for
> >> j2ee)
> >> against an oracle database for a long time. We needed to 
> log the SQL 
> >> statements that castor produce so we decided to move to the last 
> >> version of castor. We have tested 0.9.9.1 and 1.0M1 . We 
> are having 
> >> some problems with the locks of castor over the models in 
> an active 
> >> J2EE transaction.
> >> We are
> >> at a stage where we are thinking of moving away from castor.
> >>
> >> Any solutions for our problem will be greatly appreciated. Let me 
> >> introduce the problem:
> >>
> >> Transactions are managed by the container, so castor works 
> within a 
> >> transaction. Therefore, castor does not create or commit 
> anything at 
> >> all, the container do so.
> >>
> >> Imagine there is an active j2ee transaction started by the 
> container 
> >> that enfolds several operations. One of them is the loading of a 
> >> object (for example; with identity 7) from the database 
> with castor. 
> >> All works
> >> fine:
> >>
> >> load(){
> >>       Database db = jdo.getDatabase();
> >>       Object foo = db.load(foo.class, new Integer(7), 
> >> Database.Shared);
> >>       db.close();
> >> }
> >>
> >> Then, some other operations take place. Finally the object 
> previously 
> >> loaded must be deleted. So, we do what follows:
> >>
> >> delete(){
> >>       Database db = jdo.getDatabase();
> >>       Object foo = db.load(foo.class, new Integer(7), 
> >> Database.Shared);
> >>       db.remove(foo);
> >>       db.close();
> >> }
> >>
> >> The application gets blocked in the remove operation because the 
> >> first database still holds a lock over the object that has 
> not been 
> >> released with the close operation. Why?
> >>
> >> Only the commit() and rollback() operations release that 
> lock but we 
> >> cannot make such operations because is the container the 
> one that do 
> >> so.
> >>
> >> The only way to succeed is not to close the database and 
> to keep in 
> >> order to make the remove operation with that same first database.
> >> However, there
> >> are a lot of other operations in the middle. It is quite 
> difficult to 
> >> control that no one else loads the same object with 
> another database 
> >> in the same transaction because they will block each 
> other. Besides, 
> >> you suggest to perform small operations with a database and always 
> >> close it.
> >>
> >> Any suggestion? Is this a bug? Should not the close 
> operation release 
> >> the lock over the object in a j2ee environment? How must 
> we deal with 
> >> this?
> >>
> >> Thanks in advance,
> >>
> >> Raúl.
> >>
> >>
> >>
> >> -------------------------------------------------
> >> If you wish to unsubscribe from this list, please send an empty 
> >> message to the following address:
> >>
> >> user-unsubscribe <at> castor.codehaus.org
> >> -------------------------------------------------
> >>
> >
> > -------------------------------------------------
> > If you wish to unsubscribe from this list, please send an empty 
> > message to the following address:
> >
> > user-unsubscribe <at> castor.codehaus.org
> > -------------------------------------------------
> >
> 
> -------------------------------------------------
> If you wish to unsubscribe from this list, please send an 
> empty message to the following address:
> 
> user-unsubscribe <at> castor.codehaus.org
> -------------------------------------------------
> 
> 
> 
> -------------------------------------------------
> If you wish to unsubscribe from this list, please send an 
> empty message to the following address:
> 
> [EMAIL PROTECTED]
> -------------------------------------------------
> 
> 
> 

-------------------------------------------------
If you wish to unsubscribe from this list, please
send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

Reply via email to