Hi, folks
I want to know that how manages transaction in Servlet environment.
Now, I trying to using CastorJDO 0.9.4 with Tomcat 4.1.x, Struts 1.1 rc1,
and PostgreSQL 7.3.3. Database connection pooling settings and
JDO instance is in JNDI.
All installation and configuration seems to be okay.
Already, I can create/load/delete/update DataObjects:
public ActionForward execute(...) throws Exception {
InitialContext ctx = new InitialContext();
JDO jdo = (JDO)ctx.lookup("java:comp/env/jdo/CastorJdo");
Database db = jdo.getDatabase();
db.begin();
User user = (User)db.load(User.class, new Integer(1));
user.setUserName("foo");
db.close();
...
}
This code works well when accessing by web browser.
But, If I execute Jakarta JMeter to simulate simultaneous access,
LockNotGrantedException is thrown:
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock
at org.exolab.castor.persist.ObjectLock.detectDeadlock(ObjectLock.java:928)
at org.exolab.castor.persist.ObjectLock.upgrade(ObjectLock.java:722)
at org.exolab.castor.persist.LockEngine$TypeInfo.upgrade(LockEngine.java:1132)
at org.exolab.castor.persist.LockEngine$TypeInfo.access$600(LockEngine.java:963)
at org.exolab.castor.persist.LockEngine.writeLock(LockEngine.java:805)
at
org.exolab.castor.persist.TransactionContext.writeLock(TransactionContext.java:1285)
at org.exolab.castor.persist.ClassMolder.preStore(ClassMolder.java:1541)
at org.exolab.castor.persist.LockEngine.preStore(LockEngine.java:723)
at
org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java:1462)
at org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.java:528)
at testapp.action.TestAction.execute(TestAction.java:51)
This problems is caused by conflicted transaction, obviously.
Thus following code works without exception thrown, but performance is so bad.
synchronized(aSingletonObject) {
db.begin();
User user = (User)db.load(User.class, new Integer(1));
user.setUserName("foo");
db.close();
}
I'm very confused...
What is the best method?
Possibly, I make a mistake?
thanks
--
OGURA Junya <[EMAIL PROTECTED]>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev