[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipselink-users] Re: one connection for each request
 | 
Christopher.Mathrusse@xxxxxxxxxx a écrit :
GlassFish is managing your connection pool and Transactions. (or it 
should be) So long as you have your transaction boundaries defined on 
your EJB's a transaction should be started for you by the container on 
each method invocation. Even if you don't explicitly define a 
transaction boundary with the @Transaction annotation, the containers 
default behavior is to start a transaction on method invocation of the 
EJB. So a transaction should be started if one doesn't exist. The 
enlistment of the connection within the transaction is handled by the 
container as it is managing the connection pool. Every time a 
connection is retrieved from the pool, it will be enlisted within the 
running transaction. (Unless you explicitly suspend the running 
transaction)
The connection pool has configuration options. As I stated, one is for 
associating the connection to the running thread of execution. This 
allows the connection to be reused each time a connection is requested 
by the thread. Another configuration of the pool is to allow 
non-transactional connections, which allows callers that are not 
within a transaction to retrieve a connection from the pool. This 
option should *_not _*be checked and will cause an exception to be 
thrown if a non-transactional caller requests a connection. So 
basically, if it is unchecked and your are retrieving connections from 
the pool and no exception is thrown, then all connections are 
operating within a running transaction.
I hope this helps clarify.
Ok, I think I understand your point. So, it seems everything is ok and 
I don't need to worry, right? Is there a way to "see" the effective 
transaction boundaries? I mean, can I find out which requests where 
executed in what transaction?
I thought that for an ejb-managed EntityManager, there was a client 
session, and so the EntityManager should keep its connection while it is 
alive. Is this wrong?
Thanks for your advice,
Yannick