openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hans J. Prueller" <hans.pruel...@gmx.net>
Subject RE: RE: WARNING: Connection not closed by caller - messages produced byOpenJPA?
Date Fri, 30 Mar 2007 17:02:07 GMT
Hi,

BAD NEWS. Unfortuately, the approach of adding a TransactionListener did
NOT work out:

2007-03-30 18:58:15,102 : ConnectionManager.freeConnections : WARNING:
Connection not closed by caller
2007-03-30 18:58:15,107 : JFactory.postInvoke : Could not commit
transaction:<4|false|0.9.7-incubating-SNAPSHOT>
org.apache.openjpa.util.CallbackException: The context has been closed.
The stack trace at which the context was closed is available if
Runtime=TRACE logging is enabled.


seems that the transactional context was closed before OpenJPA's TX
listener is invoked - can anybody explain that?

Hans

Am Donnerstag, den 29.03.2007, 10:09 -0700 schrieb Patrick Linskey:

> > to come from OpenJPA as it occurs since we've integrated OpenJPA.
> > So you think that this message comes from somewhere else? Interesting.
> 
> Yes, I expect it's coming from your transaction manager.
> 
> I suspect that the issue might have to do with the fact that you're not
> calling close() on your EMs. Sadly, the JPA spec requires that we must
> not allow operations to succeed after close() has been invoked.
> 
> So I think that the goal here is to have OpenJPA automatically close the
> EntityManager upon completion of the transaction. This essentially
> emulates the container-managed transactional persistence context
> behavior of JPA in a normal Java EE 5 JTA environment, except that this
> EM will no longer be usable, whereas in a Java EE 5 environment,
> subsequent uses of the EM would bring to life a new persistence context.
> I think that you can do this by registering an
> org.apache.openjpa.event.EndTransactionListener. You can do so by adding
> this to your broker creation steps:
> 
> broker.addTransactionListener(new AbstractTransactionListener() {
>     public void afterCommitComplete(TransactionEvent te) {
>         ((Broker) te.getSource()).close();
>     }
> 
>     public void afterRollbackComplete(TransactionEvent te) {
>         ((Broker) te.getSource()).close();
>     }
> }
> 
> Note that you could be slighly more efficient by implementing
> EndTransactionListener instead of extending AbstractTransactionListener,
> since OpenJPA would not need to invoke the no-op implementations of the
> other parts of the TransactionListener lifecycle. This should not be a
> significant performance hit, though.
> 
> If somehow you're holding onto a reference to the EM across multiple
> transactions, or the pool is somehow doling out duplicates or something,
> you should now see exceptions thrown indicating that the EM is closed.
> Alternately, if the EM was holding onto resources that the appserver
> thinks should have been re-pooled, that should now go away.
> 
> -Patrick
> 
> -- 
> Patrick Linskey
> BEA Systems, Inc. 
> 
> _______________________________________________________________________
> Notice:  This email message, together with any attachments, may contain
> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
> entities,  that may be confidential,  proprietary,  copyrighted  and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it. 
> 
> > -----Original Message-----
> > From: Hans Prueller [mailto:hans.prueller@gmx.net] 
> > Sent: Thursday, March 29, 2007 3:44 AM
> > To: open-jpa-dev@incubator.apache.org; 
> > open-jpa-dev@incubator.apache.org
> > Subject: Re: RE: WARNING: Connection not closed by caller - 
> > messages produced byOpenJPA?
> > 
> > Thank you for your ideas.
> > 
> > I expected the message 
> > 
> > "WARNING: Connection not closed by caller"
> > 
> > to come from OpenJPA as it occurs since we've integrated OpenJPA.
> > So you think that this message comes from somewhere else? Interesting.
> > 
> > What we are doing is that we have several EJB2.1 CMP Entity Beans that
> > are created/updated within SLSB's methods. One of those CMP 
> > Entity Beans
> > is now "converted" to be an OpenJPA Pojo. So we are working 
> > on CMP EBs AND
> > OpenJPA persistent pojos within the same SLSB method (and TX).
> > 
> > The really strange thing is that this co-existence worked 
> > fine as long as there was only 1 application client issuing 
> > requests to our server. As soon as we tested with 2 
> > concurrent clients and both of them issued requests 
> > simultaneously, we got that "Conflict writing entity bean" error. 
> > 
> > "The connection not closed by caller message" occurs 
> > permanently. Perhaps the container does not close the 
> > connection as it "knows" that there are other than CMP EB 
> > clients (ie the openJPA pojo) using the same connection. So 
> > perhaps it would be required to call em.close(); at the end 
> > of every transaction?
> > 
> > Meanwhile I will try to find out where this 
> > "WARNING: Connection not closed by caller" message is coming from..
> > 
> > hans
> > 
> > -------- Original-Nachricht --------
> > Datum: Thu, 29 Mar 2007 01:46:19 -0700
> > Von: "Patrick Linskey" <plinskey@bea.com>
> > An: open-jpa-dev@incubator.apache.org
> > Betreff: RE: WARNING: Connection not closed by caller - 
> > messages produced byOpenJPA?
> > 
> > > So my feeling is that we need to get to the bottom of the "WARNING:
> > > Connection not closed by caller" line. Do you have any idea 
> > what part of
> > > your framework is issuing that statement, and under what 
> > situations it
> > > can happen? Can you get a stack from when it is issued?
> > > 
> > > 
> > > > 2007-03-27 14:57:07,160 : SEVERE :  Logger.log :    system 
> > > > exception in business method:javax.ejb.EJBException: Conflict 
> > > > writing entity bean
> > > 
> > > Similarly, do you know more details about where this is failing? The
> > > exception seems to be happening because of concurrent 
> > access to entity
> > > beans (i.e., not JPA entities). Are you using BMP entity 
> > beans backed by
> > > JPA entities or something like that? Is it possible to get 
> > a stack from
> > > where this message is logged, or at least more details 
> > about what the
> > > biz method in question is?
> > > 
> > > (None of the messages you've posted look like anything that OpenJPA
> > > would ever generate.)
> > > 
> > > -Patrick
> > > 
> > > -- 
> > > Patrick Linskey
> > > BEA Systems, Inc. 
> > > 
> > > 
> > ______________________________________________________________
> > _________
> > > Notice:  This email message, together with any attachments, 
> > may contain
> > > information  of  BEA Systems,  Inc.,  its subsidiaries  and 
> >  affiliated
> > > entities,  that may be confidential,  proprietary,  
> > copyrighted  and/or
> > > legally privileged, and is intended solely for the use of 
> > the individual
> > > or entity named in this message. If you are not the 
> > intended recipient,
> > > and have received this message in error, please immediately 
> > return this
> > > by email and then delete it. 
> > > 
> > > > -----Original Message-----
> > > > From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
> > > > Sent: Wednesday, March 28, 2007 11:48 AM
> > > > To: open-jpa-dev
> > > > Subject: WARNING: Connection not closed by caller - messages 
> > > > produced byOpenJPA?
> > > > 
> > > > Hi together,
> > > > 
> > > > I succeeded in integrating OpenJPA into our J2EE1.4 
> > > > container, running side-by-side within the same JTA 
> > transactions as
> > > > container managed EJB2.1 CMP entity beans.
> > > > 
> > > > The lookup/creation of the EntityManager instances is 
> > > > synchronizing with the JTA TXs as you suggested some weeks ago
> > > > on this list.
> > > > 
> > > > After having a test server up and running for some days, we 
> > > > are encountering lots of those messages:
> > > > 
> > > > WARNING: Connection not closed by caller
> > > > 
> > > > Suddenly (some hours later), a transactions fails:
> > > > 
> > > > 2007-03-27 14:57:07,097 : WARNING :  Logger.log :    Conflict 
> > > > with bb14:38:0:01fb60a716b0bed67c...80c679:
> > > > 2007-03-27 14:57:07,113 : WARNING :  Logger.log :    Current 
> > > > Tx is bb14:38:0:01fb60a716b0bed67c...32a266:
> > > > 2007-03-27 14:57:07,144 : WARNING :  Logger.log :    You 
> > > > should not modify the bean without a transactional context
> > > > 
> > > > 
> > > > 2007-03-27 14:57:07,160 : SEVERE :  Logger.log :    system 
> > > > exception in business method:javax.ejb.EJBException: Conflict 
> > > > writing entity bean
> > > > 
> > > > Somehow this HAS to be related to the OpenJPA integration, 
> > > > but the server was up for at least a day and running fine 
> > > > until above error
> > > > occured. Any idea how this bad conflict could be caused? 
> > > > 
> > > > regards,
> > > > Hans 
> > > > 
> > > 
> > > Notice:  This email message, together with any attachments, 
> > may contain
> > > information  of  BEA Systems,  Inc.,  its subsidiaries  and 
> >  affiliated
> > > entities,  that may be confidential,  proprietary,  
> > copyrighted  and/or legally
> > > privileged, and is intended solely for the use of the 
> > individual or entity
> > > named in this message. If you are not the intended 
> > recipient, and have
> > > received this message in error, please immediately return 
> > this by email and
> > > then delete it.
> > 
> > -- 
> > "Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
> > Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail
> > 
> 
> Notice:  This email message, together with any attachments, may contain information 
of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,
 proprietary,  copyrighted  and/or legally privileged, and is intended solely for the use
of the individual or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this by email and then
delete it.

Mime
View raw message