geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Markus Hanecke (JIRA)" <...@geronimo.apache.org>
Subject [jira] Created: (GERONIMO-2166) Entity bean (CMP) can not remove itself
Date Wed, 05 Jul 2006 15:24:30 GMT
Entity bean (CMP) can not remove itself
---------------------------------------

         Key: GERONIMO-2166
         URL: http://issues.apache.org/jira/browse/GERONIMO-2166
     Project: Geronimo
        Type: Bug
    Security: public (Regular issues) 
    Versions: 1.0    
 Environment: Geronimo 1.0 Jetty version, Sun SDK 1.4.2_12, running on Windows 20003
(not yet tested with 1.1)
    Reporter: Markus Hanecke
    Priority: Critical


It's not possible for an entity bean (CMP) to remove itself.


In a demo case the entity bean implements the TimedObject interface and get's a callback to
ejbTimeout(Timer timer).

At the end of the callback function the bean tries to remove itself calling ejbRemove() as
described in a tutorial from Sun: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMSJ2EEex3.html
(see for a sample use case, too)


The result is, that nothing will happen and the bean won't be removed.

If the bean tries to remove itself calling remove() from the bean's home or remote interface
(during the ejbTimeout callback), it leads to an exception. Looking at the stack trace it
seems that there is a problem with the transaction 
rollback of the remove() and/or ejbTimeout() call. The overall result of calling remove()
insteads of ejbRemove() is, that the server will no longer startup normally. There will alwaye
be a GBean Destroyed exception during startup.

In a third try I let the entity bean call a stateless session bean during ejbTimeout(). The
stateless session bean should then try to remove the entity bean (=the calling entity bean).
The result was an exception compareable to the second try (calling directly remove()).

Searching the internet I found out, that other J2EE servers had this problem too, but it seems
to be already fixed there.



Stack trace of thrid try:


16:25:35,748 WARN  [GeronimoConnectionEventListener] connectionErrorOccurred called with null
SQL Exception: No current connection.
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.setAutoCommit(Unknown Source)
	at org.apache.derby.iapi.jdbc.BrokeredConnection.setAutoCommit(Unknown Source)
	at org.tranql.connector.jdbc.ManagedXAConnection.localTransactionStart(ManagedXAConnection.java:89)
	at org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.begin(AbstractManagedConnection.java:188)
	at org.tranql.connector.jdbc.ConnectionHandle.setAutoCommit(ConnectionHandle.java:161)
	at org.activemq.store.jdbc.JDBCPersistenceAdapter.beginTransaction(JDBCPersistenceAdapter.java:126)
	at org.activemq.store.jdbc.JDBCPersistenceAdapterGBean.beginTransaction(JDBCPersistenceAdapterGBean.java:76)
	at org.activemq.store.jdbc.JDBCPersistenceAdapterGBean$$FastClassByCGLIB$$8be8a0a0.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800)
	at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
	at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36)
	at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
	at org.activemq.store.PersistenceAdapter$$EnhancerByCGLIB$$1e3c3181.beginTransaction(<generated>)
	at org.activemq.store.journal.JournalPersistenceAdapter.beginTransaction(JournalPersistenceAdapter.java:158)
	at org.activemq.util.TransactionTemplate.run(TransactionTemplate.java:38)
	at org.activemq.store.journal.JournalMessageStore.checkpoint(JournalMessageStore.java:227)
	at org.activemq.store.journal.JournalPersistenceAdapter$3.run(JournalPersistenceAdapter.java:357)
	at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:534)
16:25:35,763 ERROR [JournalPersistenceAdapter] Failed to checkpoint a message store: javax.jms.JMSException:
Failed to create transaction: SQL Exception: No current connection.
javax.jms.JMSException: Failed to create transaction: SQL Exception: No current connection.
	at org.activemq.util.JMSExceptionHelper.newJMSException(JMSExceptionHelper.java:49)
	at org.activemq.store.jdbc.JDBCPersistenceAdapter.beginTransaction(JDBCPersistenceAdapter.java:130)
	at org.activemq.store.jdbc.JDBCPersistenceAdapterGBean.beginTransaction(JDBCPersistenceAdapterGBean.java:76)
	at org.activemq.store.jdbc.JDBCPersistenceAdapterGBean$$FastClassByCGLIB$$8be8a0a0.invoke(<generated>)
	at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
	at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:118)
	at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:800)
	at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
	at org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:36)
	at org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
	at org.activemq.store.PersistenceAdapter$$EnhancerByCGLIB$$1e3c3181.beginTransaction(<generated>)
	at org.activemq.store.journal.JournalPersistenceAdapter.beginTransaction(JournalPersistenceAdapter.java:158)
	at org.activemq.util.TransactionTemplate.run(TransactionTemplate.java:38)
	at org.activemq.store.journal.JournalMessageStore.checkpoint(JournalMessageStore.java:227)
	at org.activemq.store.journal.JournalPersistenceAdapter$3.run(JournalPersistenceAdapter.java:357)
	at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:534)
Caused by: SQL Exception: No current connection.
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.setAutoCommit(Unknown Source)
	at org.apache.derby.iapi.jdbc.BrokeredConnection.setAutoCommit(Unknown Source)
	at org.tranql.connector.jdbc.ManagedXAConnection.localTransactionStart(ManagedXAConnection.java:89)
	at org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.begin(AbstractManagedConnection.java:188)
	at org.tranql.connector.jdbc.ConnectionHandle.setAutoCommit(ConnectionHandle.java:161)
	at org.activemq.store.jdbc.JDBCPersistenceAdapter.beginTransaction(JDBCPersistenceAdapter.java:126)
	... 16 more




-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message