[jboss-jira] [JBoss JIRA] Updated: (JBAS-4304) Jboss calls ejbStore "inside" ejbPostCreate on the same entity.

Alexey Loubyansky (JIRA) jira-events at lists.jboss.org
Thu Apr 12 08:01:58 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBAS-4304?page=all ]

Alexey Loubyansky updated JBAS-4304:
------------------------------------

        Fix Version/s:  JBossAS-5.0.0.Beta3
                       JBossAS-4.0.5.SP1 
    Affects Version/s: JBossAS-5.0.0.Beta2
                       JBossAS-3.2.8.SP1

Yes, trunk too. I just had svn update issues yesterday.

> Jboss calls ejbStore "inside" ejbPostCreate on the same entity.
> ---------------------------------------------------------------
>
>                 Key: JBAS-4304
>                 URL: http://jira.jboss.com/jira/browse/JBAS-4304
>             Project: JBoss Application Server
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: EJB2
>    Affects Versions: JBossAS-4.0.4.GA, JBossAS-5.0.0.Beta2, JBossAS-3.2.8.SP1
>         Environment: Windows XP Home/Pro, MySql or MSSQL as DB.
>            Reporter: Eugene Afonin
>         Assigned To: Alexey Loubyansky
>             Fix For: JBossAS-4.2.0.GA,  JBossAS-5.0.0.Beta3, JBossAS-4.0.5.SP1 
>
>         Attachments: patch.txt
>
>
> I beleive, I encountered a bug in jboss 4.0.4 GA.
> We have an BMP entity bean(SWRecord in trace below) with a valueobject as an interface with a client. Client can pass the valueobject to the ejbCreate method with incompletely filled data. SWRecord fills missing data on ejbPostCreate, using several other beans by their finders.
> The problem is that findSingleObject causes the sync of the entities in the transaction including bean that currently in ejbPostCreate - Jboss calls ejbStore on that bean.
> I beleive, that's direct violation of EJB2 spec, since ejbStore could be called only on bean in Ready state, and it can only be Ready after ejbPostCreate returns.
> Here is a stacktrace taken from the ejbStore of non-created bean (I'm sure it's the same entity - I checked with debugger).
> Adrian Brock: I've snipped the stack trace to the relevant information and added comments:
> <!-- ejbStore() is invoked here -->
> 	at com.supportwizard.dml.ejb.SWRecordBMP.ejbStore(SWRecordBMP.java:57)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.jboss.ejb.plugins.BMPPersistenceManager.invokeEjbStore(BMPPersistenceManager.java:498)
> 	at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeEjbStore(CachedConnection
> Interceptor.java:294)
> 	at org.jboss.ejb.EntityContainer.invokeEjbStore(EntityContainer.java:735)
> 	at org.jboss.ejb.GlobalTxEntityMap$2.invokeEjbStore(GlobalTxEntityMap.java:132)
> <!-- Because the GlobalTxEntityMap knows the context -->
> 	at org.jboss.ejb.GlobalTxEntityMap$GlobalTxSynchronization.synchronize(GlobalTxEntityMap.java:281)
> 	at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:208)
> 	at org.jboss.ejb.EntityContainer.synchronizeEntitiesWithinTransaction(EntityContainer.java:136)
> <!-- The synchronization/flush occurs because of the finder -->
> 	at org.jboss.ejb.EntityContainer.findSingleObject(EntityContainer.java:1100)
> 	at org.jboss.ejb.EntityContainer.find(EntityContainer.java:721)
> <!-- snipped -->
> 	at $Proxy341.findByChildColumnID(Unknown Source)
> 	at com.supportwizard.dictionary.SWChoiceBean.getPossibleChoiceLines(SWChoiceBean.java:219)
> <!-- Which is invoked from an SLSB -->
> 	at $Proxy352.getPossibleChoiceLines(Unknown Source)
> 	at com.supportwizard.cachewrappers.SWChoiceCacheWrapper.getPossibleChoiceLines(SWChoiceCacheWrapper
> .java:87)
> <!-- Invoked from ejbPostCreate -->
> 	at com.supportwizard.dml.ejb.SWRecordBean.ejbPostCreate(SWRecordBean.java:381)
> <!--snipped-->
> 	at $Proxy1189.create(Unknown Source)
> 	at com.supportwizard.dml.ejb.SWRecordCreatorBean.com$supportwizard$dml$ejb$SWRecordCreatorBean$crea
> teRecord$aop(SWRecordCreatorBean.java:259)

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

        



More information about the jboss-jira mailing list