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

Reply via email to