I have problem in changing ClassDescriptor in managed
environment(Jboss-container managed transaction). Whenever I add the
following code exceptions thrown.
Another question, what's the difference between using the following 2
statements, if I used put method, exception is not thrown but the
ClassDescriptor changes doesn't take place.
1. broker.getDescriptorRepository().put(LogReceivingItem.class,cd);
2. broker.getDescriptorRepository().setClassDescriptor(newCd);
FieldDescriptor updateField =
broker.getClassDescriptor(LogReceivingItem.class).
getFieldDescriptorByName("status");
FieldDescriptor pkField =
broker.getClassDescriptor(LogReceivingItem.class).getPrimaryKey();
ClassDescriptor origCd = broker.getDescriptorRepository().
getDescriptorFor(LogReceivingItem.class);
ClassDescriptor newCd = new
ClassDescriptor(broker.getDescriptorRepository());
newCd.setTableName("LOG_RECEIVING_ITEM");
newCd.addFieldDescriptor(pkField);
newCd.addFieldDescriptor(updateField);
broker.getDescriptorRepository().setClassDescriptor(newCd);
Iterator iterate3 = issueItem.iterator();
while(iterate3.hasNext()){
LogReceivingItem receivingItem =
(LogReceivingItem)iterate3.next();
tx.lock(receivingItem,Transaction.WRITE);
receivingItem.setStatus(ILog.LOG_ISSUED);
}
broker.getDescriptorRepository().setClassDescriptor(origCd);
Regards,
Stephen
2003-07-26 10:54:59,350 ERROR [org.apache.ojb.odmg.DatabaseImpl] Could
not close database, found active transaction. tx-status was
'STATUS_ACTIVE'
2003-07-26 10:54:59,350 ERROR [org.apache.ojb.odmg.J2EETransactionImpl]
org.apache.ojb.broker.OJBRuntimeException: Could not commit, because tx
status was marked rollback
2003-07-26 10:54:59,413 ERROR [STDERR] Query "rollback"
execution time: 0
2003-07-26 10:54:59,413 ERROR [STDERR] Query "SET autocommit=1"
execution time: 0
2003-07-26 10:54:59,413 ERROR [STDERR] Query "SHOW VARIABLES LIKE
'tx_isolation'" execution time: 0 result set fetch time: 0
2003-07-26 10:54:59,413 ERROR [org.jboss.ejb.plugins.LogInterceptor]
RuntimeException:
org.odmg.TransactionInProgressException: Database cannot be closed,
associated Tx is still open.
Used PBKey was org.apache.ojb.broker.PBKey: repository=syweb, user=syl,
password=*****
at org.apache.ojb.odmg.DatabaseImpl.close(Unknown Source)
at
my.com.shinyang.eply.service.ejb.LogIssuingSessionBean.ejbRemove(LogIssu
ingSessionBean.java:92)
at
org.jboss.ejb.StatelessSessionEnterpriseContext.discard(StatelessSession
EnterpriseContext.java:93)
at
org.jboss.ejb.plugins.AbstractInstancePool.discard(AbstractInstancePool.
java:271)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statele
ssSessionInstanceInterceptor.java:99)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterce
ptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptor
CMT.java:237)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.jav
a:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer
.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:383
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.ja
va:701)
at java.lang.Thread.run(Thread.java:534)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]