Thanks, may be that's the explanation why it has worked one time ;))

Thanx a lot - I love the quick response time ;)

Cheers
Thomas
> -----Urspr�ngliche Nachricht-----
> Von: Armin Waibel [mailto:[EMAIL PROTECTED]]
> Gesendet: Mittwoch, 4. September 2002 12:39
> An: OJB Users List; [EMAIL PROTECTED]
> Betreff: Re: TransactionNotInProgressException and AutoCommit Question
>
>
> Hi again,
>
> > Ok, I forgot
> >
> > Environment
> > OJB 0.9.5
> > MySQL 3.23.38-nt
> > Windows 2000
> > JDK 1.3.1
> >
> > BrokerFactory does only return the DefaultBroker:
> >     public static PersistenceBroker getDefaultBroker() {
> >         PersistenceBroker broker = null;
> >
> >         if (m_defaultBroker == null) {
> >             synchronized(PersistenceBrokerFactory.class) {
> >                 if (m_defaultBroker == null) {
>
> Hold PB instances is not good. This can cause unexpected behaviour.
> The PBF pools PB instances. When you call PB.close() the PB instance was
> returned to pool. Your BrokerFactory holds one instance of a PB as a
> singleton :-(, but at the same time the instance was returned to pool
> for re-use through other classes!!
>
> Kick out the singleton! ;-) You do not have a performace gain in using
> the singleton, since PB instances were pooled.
>
> HTH,
> Armin
>
> >                     try {
> >                         m_defaultBroker =
> > PersistenceBrokerFactory.defaultPersistenceBroker();
> >                         broker = m_defaultBroker;
> >
> >                     } catch (Throwable t) {
> >                         m_log.error("Error initializing the Default
> > PersistenceBroker.");
> >                     }
> >                 }
> >             }
> >         } else {
> >             broker = m_defaultBroker;
> >         }
> >
> >         return broker;
> > }
> >
> > Hope that helps
> >
> > bye
> > Thomas
> >
> > > -----Urspr�ngliche Nachricht-----
> > > Von: Armin Waibel [mailto:[EMAIL PROTECTED]]
> > > Gesendet: Mittwoch, 4. September 2002 12:19
> > > An: OJB Users List; [EMAIL PROTECTED]
> > > Betreff: Re: TransactionNotInProgressException and AutoCommit
> Question
> > >
> > >
> > > Hi Thomas,
> > >
> > > which version of OJB do you use?
> > >
> > > I see in your code snip:
> > > ....
> > > try {
> > >             broker = BrokerFactory.getDefaultBroker();
> > >
> > >             broker.beginTransaction();
> > > ....
> > >
> > > Did you implement your own PersistenceBrokerFactory 'BrokerFactory'?
> > > What does BrokerFactory do?
> > >
> > > > I have debugged the code and the problem is broker.store(sel)
> > > > I'm currently using the DefaultSequenceMangerImpl which stores the
> MAX
> > > ID's
> > > > for each table in Object SequenceEntry, within the store-process a
> new
> > > > Identity is created for SequenceEntry with the construtor of
> Identity
> > >
> > > It's recommended to use the SequenceManagerHiLoImpl or in older
> versions
> > > the SequenceManagerHighLowImpl.
> > >
> > >
> > > regards,
> > > Armin
> > >
> > >
> > > ----- Original Message -----
> > > From: "Thomas Fahrmeyer" <[EMAIL PROTECTED]>
> > > To: "OJB Users List" <[EMAIL PROTECTED]>
> > > Sent: Wednesday, September 04, 2002 12:00 PM
> > > Subject: AW: TransactionNotInProgressException and AutoCommit
> Question
> > >
> > >
> > > > Hi,
> > > >
> > > > the complete Method is (and this is executed):
> > > >    protected boolean saveSelection(Selection sel, boolean
> > > asMarketingAction)
> > > > {
> > > >         boolean ok = false;
> > > >         PersistenceBroker broker = null;
> > > >
> > > >         try {
> > > >             broker = BrokerFactory.getDefaultBroker();
> > > >
> > > >             broker.beginTransaction();
> > > >
> > > >             Action action = null;
> > > >
> > > >
> > > >             broker.store(sel);
> > > >
> > > >             // Hack: ok state must be set after commit, but there
> is a
> > > >             // unresolved NotInTransactionException which have to
> be
> > > > considered.
> > > >             // Selection is saved anyhow
> > > >             ok = true;
> > > >
> > > >             // 7. commit transaction
> > > >             broker.commitTransaction();
> > > >             file://broker.close();
> > > >             ok = true;
> > > >         } catch (PersistenceBrokerException pbe) {
> > > >             if (broker.isInTransaction()) {
> > > >                 broker.abortTransaction();
> > > >             }
> > > >
> > > >             m_log.error("Selection could not be saved !
> Transaction is
> > > > rolled back.", pbe);
> > > >         } finally {
> > > >             if (broker != null) {
> > > >                 file://broker.close();
> > > >             }
> > > >         }
> > > >         return ok;
> > > >
> > > >     } file://end
> > > >
> > > > I have debugged the code and the problem is broker.store(sel)
> > > > I'm currently using the DefaultSequenceMangerImpl which stores the
> MAX
> > > ID's
> > > > for each table in Object SequenceEntry, within the store-process a
> new
> > > > Identity is created for SequenceEntry with the construtor of
> Identity
> > > (only
> > > > the last lines ...)
> > > >             else
> > > >             {
> > > >                 broker =
> > > > PersistenceBrokerFactory.defaultPersistenceBroker();
> > > >                 ClassDescriptor cld =
> > > > broker.getClassDescriptor(objectToIdentitify.getClass());
> > > >
> > > >                 // identities must be unique accross extents !
> > > >                 this.objectsClass =
> > > > broker.getExtentClass(objectToIdentitify.getClass());
> > > >                 this.objectsRealClass =
> objectToIdentitify.getClass();
> > > >                 this.pkValues =
> cld.getKeyValues(objectToIdentitify);
> > > >             }
> > > >
> > > >             checkForPrimaryKeys();
> > > > <<<< passed and jump to finally >>>>
> > > >         }
> > > >         catch (Throwable t)
> > > >         {
> > > >             LoggerFactory.getDefaultLogger().error(t);
> > > >             throw new
> > > ClassNotPersistenceCapableException(t.getMessage(),
> > > > t);
> > > >         }
> > > >         finally
> > > >         {
> > > >         if (broker != null)
> > > >         {
> > > >             broker.close();
> > > >         }
> > > >         }
> > > >
> > > > The last statement is broker.close() which is the problem. It
> releases
> > > the
> > > > connection and the connectionManager used by the broker gets in
> state
> > > > inLocalTransaction = false that on the other Hand raises the
> exception
> > > > within ConnectionManager.localCommit()
> > > > <<<
> > > >     public void localCommit()
> > > >     {
> > > > //        if (log.isDebugEnabled()) log.debug("commit was
> called");
> > > >         if (!this.isInLocalTransaction)
> > > >         {
> > > >             throw new TransactionNotInProgressException("Not in
> > > transaction,
> > > > call begin() before commit()");
> > > >         }
> > > > ...
> > > > >>>>>
> > > >
> > > > There's the problem. Hmm, I'm a little bit confused. The code says
> > > that
> > > > should happen every time i wanna use transactions with the PB API.
> In
> > > the
> > > > case a Identity is constructed with constructor Identity(Object)
> and
> > > not the
> > > > one getting a broker as second argument.
> > > >
> > > > Is this a bug ? Related to the SequenceManager ? I think it is not
> > > related
> > > > to ODMG or PB API, isn't ?
> > > >
> > > > Thanx for your help.
> > > > Thomas
> > > >
> > > > > -----Ursprungliche Nachricht-----
> > > > > Von: Thomas Mahler [mailto:[EMAIL PROTECTED]]
> > > > > Gesendet: Dienstag, 3. September 2002 20:50
> > > > > An: OJB Users List
> > > > > Betreff: Re: TransactionNotInProgressException and AutoCommit
> > > Question
> > > > >
> > > > >
> > > > > Your stacktrace indicates that you have mixed PersistenceBroker
> and
> > > ODMG
> > > > > Transactions !
> > > > >
> > > > > The code you present here does IMHO not match to the stacktrace
> > > where we
> > > > > see a org.apache.ojb.odmg.TransactionImpl.abort() first.
> > > > > Your code snippet does not contain such a call???
> > > > >
> > > > > cheers,
> > > > > Thomas
> > > > >
> > > > >
> > > > > Thomas Fahrmeyer wrote:
> > > > > > Hi,
> > > > > >
> > > > > > If I try to save a new object I get the exeption
> > > > > >
> > > > > > ----- Root Cause -----
> > > > > > org.apache.ojb.broker.TransactionNotInProgressException
> > > > > > at
> > > > > >
> > > > >
> org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.abortTransact
> > > > > ion(Persis
> > > > > > tenceBrokerImpl.java:266)
> > > > > > at
> > > > >
> org.apache.ojb.odmg.TransactionImpl.abort(TransactionImpl.java:505)
> > > > > > at
> > > > > >
> > > > >
> de.virtualsolution.struts.actions.UpdateSelectionAction.updateSele
> > > > > ctionODMG(
> > > > > > UpdateSelectionAction.java:225)
> > > > > >
> > > > > > that happend with the following code:
> > > > > >
> > > > > >
> > > > > >>>>>snippet
> > > > > >>>>
> > > > > >            broker.beginTransaction();
> > > > > >
> > > > > >            // a new object
> > > > > > broker.store(sel);
> > > > > >
> > > > > >             // 7. commit transaction
> > > > > >             broker.commitTransaction();
> > > > > >         } catch (PersistenceBrokerException pbe) {
> > > > > >             if (broker.isInTransaction()) {
> > > > > >                 broker.abortTransaction();
> > > > > >             }
> > > > > >
> > > > > >             m_log.error("Selection could not be saved !
> > > Transaction is
> > > > > > rolled back.", pbe);
> > > > > >         } finally {
> > > > > >             if (broker != null) {
> > > > > >                 broker.close();
> > > > > >             }
> > > > > >         }
> > > > > > <<<<< end
> > > > > >
> > > > > > the call to commitTransaction() raises this exception.
> > > > > >
> > > > > > The object is saved correctly anyway. Is that related to the
> > > autoCommit
> > > > > > Settings in OJB.properties ? Which settings should I use if I
> > > wanna use
> > > > > > begin- and commitTransaction() any time ?
> > > > > > I have tried to set the autoCommit-level to 2 in
> OJB.properties
> > > and even
> > > > > > ignoreAutoCommitException to true, but doesn't change
> anything.
> > > > > >
> > > > > > Can someone help me out (i'm convinced ;)
> > > > > >
> > > > > > bye
> > > > > > Thomas
> > > > > >
> > > > > >
> > > > > > --
> > > > > > To unsubscribe, e-mail:
> > > > <mailto:[EMAIL PROTECTED]>
> > > > > For additional commands, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > >
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > >
> >
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> >
> >
>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to