[jboss-jira] [JBoss JIRA] Created: (JBAS-4091) Transaction issue with separate JBoss jars

Don Seiler (JIRA) jira-events at lists.jboss.org
Mon Feb 12 15:24:30 EST 2007


Transaction issue with separate JBoss jars
------------------------------------------

                 Key: JBAS-4091
                 URL: http://jira.jboss.com/jira/browse/JBAS-4091
             Project: JBoss Application Server
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: Transaction Manager
    Affects Versions: JBossAS-4.0.5.GA
         Environment: RHEL 3, Sun JDK 5 (1.5.0_07)
            Reporter: Don Seiler
         Assigned To: Adrian Brock


Recently we have tried to separate our EJB Project out into two parts.
One project to handle all of our persistence and another to handle all
of our service's.   The persistence project was set up to serve out
entity objects back through a DAO service.  This way our Service project
can just call into our DAO services and retrieve the information that
they would need and allowing for a nice split between two different
types of projects.  However, in the process of separating these projects
out we hit some issues with the transaction manager not flushing upon
the call of the flush command. 

The flush command is something we greatly rely on as a means to make
sure our data is persisted underneath the proper user in the database
through contexts. It is also the means in which we can allow support of
oracle proxy connections. We achieved this by having a
PrepareDatabaseConnection AOP method; which is executed before and after
a method is called. Allowing for us to set the database context after
the transaction is started and to close the database context before the
transaction ends.  Ideally we would have liked to hook it directly onto
the begging and end of the transaction but we couldn't find a great way
to do so.  So instead on every one of our services and DAO work we added
the PrepareDatabaseConnection interceptor to properly set our database
context or to configure the connection as a proxy connection.   In a
single jar this functionality works great.  However, in separate jars we
start to see issues with the database context not being properly set,
which leads to issues with auditing what users changed the data in the
database. 

In a single jar the contents flush upon my call to the entity manager to
commit / update the information.  However, when these are separate jars
the flush doesn't occur until the transaction manager tells it to flush
and close the transaction.  At which point in time the database context
has already been unset leaving no record of which user was actually
using that connection from the connection pool.

Why is it when we move the database code out to a separate jar the
entity managers flush doesn't actually flush the information when it was
requested to?

-- 
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