Hi everybody !
We are developping a J2EE application and we have big problems with the
transactions.
We are searching many documentations and every day we are learning lots of
interesting things but... currently, we have decided to change the finders into
the DAO for a performance reason (we are using another driver to connect to
SQLServer2000 : JTDS1.0.2 --> excellent driver).
But the problem is that if one creates or updates entities and then just after
a query DAO is executed to get back the data whose state has just changed, we
don't receive them.
Correctly! Because the DAO is called inside of a session bean's method with
trans-attribute "required". Thus the data is not yet committed.
Unfortunately, i can't to provide you ejb-jar.xml, jboss.xml because the files
of our application are in my workplace but i'm going to show an example :
JournalDelegate
|
| public Collection determineValidJournals(String logonId) throws
SystemException{
| try{
| return getSessionFacade().determinevalidJournals(logonId);
| } catch (RemoteException re) {
| throw new SystemException(.......);
| }
| }
|
|
|
| JournalSessionFacadeObject --> EJBObject
|
| public Collection determineValidJournals(String logonId) throws
SystemException, RemoteException;
|
|
|
| JournalSessionFacade --> SessionBean
|
| public Collection determineValidJournals(String logonId) throws
SystemException {
| return getSessionBean().determineValidJournals(logonId);
| }
|
|
|
|
| JournalSessionBeanObject --> EJBlocalObject
|
| public Collection determineValidJournals(String logonId) throws
SystemException;
|
|
|
| JournalSessionBean --> SessionBean
|
| public Collection determineValidJournals(String logonId) throws
SystemException {
| Iterator it = findAllFinancialCentersByVerifier(logonId);
| Collection coll = new ArrayList();
| while (it.hasNext()){
| FinancialCenterVO fc = (FinancialCenterVO) it.next();
| validateJournal(fc);
| coll.addAll(findValidJournals(fc)); --> This last method
causes a problem
| }
| return coll;
| }
|
|
| public void validateJournal(fc) throws SystemException{
| Iterator it = findCheckableJournals(fc);
| while (it.hasNext()){
| JournalVO journal = (JournalVO) it.next();
| update data into DB after check of datas validity by
findByPrimaryKey(......).setValueObject(journal);
| }
| }
|
|
ejb-jar.xml
Only the local Session beans and Entity Beans methods are in "REQUIRED", NOT
the session facades methods.
To resolve the fastest way, we want to put the findValidJournals(.....) in
determineValidJournals(....) of SessionFacade. But JBoss has decided to put
this method into a transaction !!!
In fact, that doesn't resolve our problem --> So that method has been put into
JournalDelegate. But this is abnormal --> 2 network calls
Why does JBoss automatically make a transaction ????
Does a tag exist to modify this behavior ????
Thank for your time :-)
Pascale
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3867136#3867136
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3867136
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user