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