Hi all,
I wonder if anyone can help. I'm developing a web-based application on
jboss2.2/castor0.9.3/tomcat3.2/MSSQLServer7.0 based roughly on the "rooms"
example from the jboss site (stateless session beans, using a DAO class,
using castor), and am making pretty good progress. Most of the things I have
tried have worked seemlessly - dependent objects, nested attributes, long
transactions etc. However I'm running in to a problem when I attempt to load
objects that have been populated via direct db access with sql. For example,
if I populate the Orders table with a dozen orders using sql, and then try
to load anyone of the orders via castor I get the following exception.
[CastorJDO] java.lang.IllegalStateException: Transaction
org.exolab.castor.jdo.engine.TransactionContextImpl@5e293a does not hold the
read lock: net.ereed.order
s.ARRDOrderData/1001/0 -/-!
[CastorJDO] at
org.exolab.castor.persist.LockEngine$TypeInfo.assure(LockEngine.java:1163)
[CastorJDO] at
org.exolab.castor.persist.LockEngine$TypeInfo.access$3(LockEngine.java:1157)
[CastorJDO] at
org.exolab.castor.persist.LockEngine.preStore(LockEngine.java:706)
[CastorJDO] at
org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java
:1146)
[CastorJDO] at
org.exolab.castor.jdo.engine.DatabaseImpl.beforeCompletion(DatabaseImpl.java
:541)
[CastorJDO] at
org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1228)
[CastorJDO] at org.jboss.tm.TxCapsule.commit(TxCapsule.java:322)
[CastorJDO] at
org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:76)
[CastorJDO] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:318)
[CastorJDO] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[CastorJDO] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:19
0)
[CastorJDO] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
[CastorJDO] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.jav
a:271)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:392)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:469)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(Stateless
SessionProxy.java:152)
[CastorJDO] at $Proxy3.listOrders(Unknown Source)
[CastorJDO] at
net.ereed.services.ARRDOrderServiceImpl.listOrders(ARRDOrderServiceImpl.java
:202)
I've tried a couple of things - I've turned off caching for the class
net.ereed.orders.ARRDOrderData and set the access type to db-locked in the
mapping file,in which case I don't get the above exception, but instead
[CastorJDO] org.exolab.castor.jdo.PersistenceException: Object,
net.ereed.orders.ARRDOrderData/1001, isn't loaded in the persistence
storage!
[CastorJDO] at
org.exolab.castor.persist.ClassMolder.preStore(ClassMolder.java:1106)
[CastorJDO] at
org.exolab.castor.persist.LockEngine.preStore(LockEngine.java:710)
[CastorJDO] at
org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java
:1146)
[CastorJDO] at
org.exolab.castor.jdo.engine.DatabaseImpl.beforeCompletion(DatabaseImpl.java
:541)
[CastorJDO] at
org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1228)
[CastorJDO] at org.jboss.tm.TxCapsule.commit(TxCapsule.java:322)
[CastorJDO] at
org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:76)
[CastorJDO] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:318)
[CastorJDO] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[CastorJDO] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:19
0)
[CastorJDO] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
[CastorJDO] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.jav
a:271)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:392)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:469)
[CastorJDO] at
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(Stateless
SessionProxy.java:152)
[CastorJDO] at $Proxy3.listOrders(Unknown Source)
For orders that I create directly via my orderservice (using castor) I have
no problem loading/updating/removing them. I know I am being very dumb
somewhere, but I don't know where.
Any help greatly appreciated.
Thanks, Jon.
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev