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