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:[EMAIL PROTECTED] 
> > 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" <[EMAIL PROTECTED]>
> > 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:[EMAIL PROTECTED] 
> > > > 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.

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to