From: Radu M. <rad...@ho...> - 2002-06-17 19:27:31
|
Thanks David, this is exactly what I wanted to know. Further, I have another question about LocalTxConnectionManager this time: A scenario like this should use a single managed connection: LocalConnection conn1 = localConnectionFactory.getConnection(); conn1.doSomething(); LocalConnection conn2 = localConnectionFactory.getConnection(); conn2.doSomething(); conn1.close(); conn2.close(); First managed connection is taken from the pool, while the second one is returned from the txToManagedConnectionMap and is the same with the first one. The question is what happens when you transmit some ConnectionRequestInfo to the getConnection()? The first managed connection will be returned by the pool and then cached in the txToManagedConnectionMap with the first ConnectionRequestInfo. The second managed connection will be taken from the cached txToManagedConnectionMap, but with the same ConnectionRequestInfo as the first one, which is not what I intended. Let's consider a connection to a logging system where the logging filename is transmitted with the ConnectionRequestInfo. If you have 2 connection requests in the same local transaction, both will point to the same file name. The getManagedConnection() method in LocalTxConnectionManager correctly takes the CRI and subject as parameters, but they are not used if a cached managed connection is found ( cached managed connection CRI is used instead). I haven't tried this scenario, please correct me if I'm wrong I think connection sharing makes sense when there are many connections to the same resource (if the managed connection opens a communication channel with the resource, it's desirable to perform all operations through a single channel). With a proper connection management at the client level this can be avoided though (share a single high-level connection instead of a managed connection). Again , this would be for multiple calls within the same EJB. If multiple EJBs are involved in a transaction, there should be a way to share managed connections, like the one you implemented in LocalTxConnectionManager. I don't think this would be faster in all cases though. A single managed connection may be a bottleneck for a small number of connection but could avoid another problems (on the resource side) for a large number of connections. Thanks Radu ----- Original Message ----- From: "David Jencks" <dav...@di...> To: <jbo...@li...> Sent: Monday, June 17, 2002 1:58 PM Subject: Re: [JBoss-user] JCA managed connection pool > I find that part of the spec rather confusing and that it leaves many > things unspecified. > > The closest thing to connection sharing in jboss 3 is if you use local > transactions, all getConnection calls within a (managed) transaction will > get connection handles from the same ManagedConnection, the one the local > transaction was started on. Most likely you are getting these connections > from different ejbs, and jboss will have disconnected the original handle > from the managed connection by the time the call reaches the second ejb. > So generally you will only have one handle at a time associated with a > ManagedConnection, but will have obtained several from the > ManagedConnection within a tx. > > The no tx and xa tx connection managers don't do this, they always get a > ManagedConnection from the pool. The spec hints vaguely that it may result > in speed increases (sith xa??) to hold onto the same xa ManagedConnection > throughtout a tx, but I have no experience with this. If you do, please > let me know. > > thanks > david jencks > > On 2002.06.17 12:15:33 -0400 Radu Mateescu wrote: > > Hello, > > JCA specifications mention something about shared connection. Can > > somebody explain briefly how this is implemented in JBoss 3.0? I need a > > little scenario for one managed connection and multiple connection > > handles (I'm sure I miss something, because it appears to me that every > > time getConnection() is called, a new managed connection is returned from > > the pool and then this is used to create a connection handle ) > > > > Thanks > > Radu > > > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> > > <HTML><HEAD> > > <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> > > <META content="MSHTML 6.00.2600.0" name=GENERATOR> > > <STYLE></STYLE> > > </HEAD> > > <BODY bgColor=#ffffff> > > <DIV><FONT face=Arial size=2>Hello,</FONT></DIV> > > <DIV><FONT face=Arial size=2>JCA specifications mention something about > > shared > > connection. Can somebody explain briefly how this is implemented in > > JBoss > > 3.0? I need a little scenario for one managed connection and > > multiple > > connection handles (I'm sure I miss something, because it appears to me > > that > > every time getConnection() is called, a new managed connection is > > returned from > > the pool and then this is used to create a > > connection handle )</FONT></DIV> > > <DIV><FONT face=Arial size=2></FONT> </DIV> > > <DIV><FONT face=Arial size=2>Thanks </FONT></DIV> > > <DIV><FONT face=Arial size=2>Radu</FONT></DIV></BODY></HTML> > > > > _______________________________________________________________ > > Sponsored by: > ThinkGeek at http://www.ThinkGeek.com/ > _______________________________________________ > JBoss-user mailing list > JBo...@li... > https://lists.sourceforge.net/lists/listinfo/jboss-user > |