Hi Armin,

Again, I am really thankful to you for clearing that up. I followed both
the managed and non-managed approaches and both worked.

For the non-managed scenario, I set the settings as such:

useAutoCommit="2"
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
ConnectionFactoryClass=ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl

And the code looks as follows:

try {
        broker.beginTransaction();
        
        broker.store(objA);
        broker.store(objB);
        broker.deleteByQuery(someQuery);
        broker.store(objC);
        
        broker.commitTransaction();
} catch (Exception e) {
        broker.abortTransaction();
}

For the managed scneario, I set the settings as such:

useAutoCommit="0" 
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl

And the code looks as follows(I am using WSAD 5.1.2):

javax.transaction.UserTransaction userTx = null;

try {
        InitialContext initCtx = new InitialContext();
        userTx = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
        userTx.begin();
        
        broker.store(objA);
        broker.store(objB);
        broker.deleteByQuery(someQuery);
        broker.store(objC);
        
        userTx.commit();
} catch(Exception e) {
        userTx.rollback();
}

Both of the above approaches worked. Now I would like to know which of
them is the better approach? What are the pros and cons of managed vs.
non-managed? Is there a document I can refer to? 

Again, thank you very much for your help. 

Regards,
-Vamsi

--- Armin Waibel <[EMAIL PROTECTED]> wrote:

> Hi Vamsi,
> 
>  > Is there something I should change in OJB.properties? I am using 
> ojb1.0.1.
> 
> Seems you mixed the managed and non-managed settings.
> 
> managed:
> useAutoCommit="0"
>
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl
>
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl
> 
> non-managed:
> useAutoCommit="1" or "2"
>
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
> ConnectionFactoryClass= all except ConnectionFactoryManagedImpl
> 
> Your example source seems to expect a non-managed environment, because 
> you use the PB-tx demarcation.
> In managed environments you have to use programmatic transactions via 
> JTA UserTransaction or declarative transaction e.g. via session beans 
> and deployment descriptor entries (PB-tx declaration is not allowed).
> 
> regards,
> Armin
> 
> 
> 
> Vamsi Atluri wrote:
> > Hi Armin,
> > 
> > I really appreciate your response. The connection descriptor is as
> > follows:
> > 
> >     <jdbc-connection-descriptor 
> >             jcd-alias="OJBDb" 
> >             default-connection="true" 
> >             platform="Db2" 
> >             jdbc-level="1.0" 
> >             jndi-datasource-name="jdbc/ojbDataSource"
> >             username="someUserName" 
> >             password="somePassWord" 
> >             batch-mode="false" 
> >             useAutoCommit="0" 
> >             ignoreAutoCommitExceptions="false">
> >             <sequence-manager
> >
>
className="org.apache.ojb.broker.util.sequence.SequenceManagerNativeImpl">
> >                 <attribute attribute-name="grabSize"
> > attribute-value="1"></attribute>
> >             </sequence-manager>
> >     </jdbc-connection-descriptor>
> > 
> > The OJB.properties file has the following settings:
> > 
> > # repository file settings
> > repositoryFile=repository.xml
> > useSerializedRepository=false
> > serializedRepositoryPath=.
> > 
> > # PersistenceBrokerFactory / PersistenceBroker
> >
>
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
> >
> PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl
> > 
> > # PersistenceBroker pool
> > maxActive=100
> > maxIdle=-1
> > maxWait=2000
> > timeBetweenEvictionRunsMillis=-1
> > minEvictableIdleTimeMillis=1000000
> > whenExhaustedAction=2
> > 
> > # ConnectionFactory / Default ConnectionPool
> >
>
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl
> > 
> > # ConnectionManager
> >
>
ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerImpl
> > 
> > # SqlGenerator
> >
>
SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl
> > 
> > # IndirectionHandler
> >
>
IndirectionHandlerClass=org.apache.ojb.broker.core.proxy.IndirectionHandlerDefaultImpl
> > 
> > # ListProxy
> > ListProxyClass=org.apache.ojb.broker.core.proxy.ListProxyDefaultImpl
> > 
> > # SetProxy
> > SetProxyClass=org.apache.ojb.broker.core.proxy.SetProxyDefaultImpl
> > 
> > # CollectionProxy
> >
>
CollectionProxyClass=org.apache.ojb.broker.core.proxy.CollectionProxyDefaultImpl
> > 
> > # StatementManager
> >
> StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager
> > 
> > # StatementsForClass
> >
>
StatementsForClassClass=org.apache.ojb.broker.accesslayer.StatementsForClassImpl
> > 
> > # JdbcAccess
> > JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl
> > 
> > # Object cache
> > ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheDefaultImpl
> > descriptorBasedCaches=false
> > 
> > # Locking
> > LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl
> > LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl
> > LockTimeout=60000
> > ImplicitLocking=true
> > LockServletUrl=http://127.0.0.1:8080/ojb-lockserver
> > LockAssociations=WRITE
> > 
> > # OQL / SQL settings
> > OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl_2
> > SqlInLimit=200
> > 
> > # ODMG settings
> > ImplementationClass=org.apache.ojb.odmg.ImplementationDefaultImpl
> > OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager
> > DListClass=org.apache.ojb.odmg.collections.DListImpl_2
> > DArrayClass=org.apache.ojb.odmg.collections.DListImpl_2
> > DMapClass=org.apache.ojb.odmg.collections.DMapImpl
> > DBagClass=org.apache.ojb.odmg.collections.DBagImpl
> > DSetClass=org.apache.ojb.odmg.collections.DSetImpl
> > 
> > # Meta data / mapping settings
> >
>
PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl
> > 
> > # Transaction Management and assocation
> >
>
JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WebSphereTransactionManagerFactory
> > 
> > # Logging
> > LoggerClass=org.apache.ojb.broker.util.logging.PoorMansLoggerImpl
> > LoggerConfigFile=log4j.properties
> > DEFAULT.LogLevel=WARN
> > org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=WARN
> >
>
org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=WARN
> > org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=WARN
> >
>
org.apache.ojb.broker.metadata.ConnectionDescriptorXmlHandler.LogLevel=WARN
> > org.apache.ojb.broker.accesslayer.JdbcAccessImpl.LogLevel=WARN
> > org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=WARN
> > org.apache.ojb.broker.accesslayer.StatementsForClassImpl.LogLevel=WARN
> >
>
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN
> > org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=WARN
> >
>
org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=WARN
> > org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.LogLevel=WARN
> > org.apache.ojb.broker.core.proxy.IndirectionHandler.LogLevel=WARN
> > ODMG.LogLevel=DEBUG
> > JDO.LogLevel=DEBUG
> > performance.LogLevel=INFO
> > soda.LogLevel=WARN
> > ConfigurableFactory.LogLevel=WARN
> > 
> > Is there something I should change in OJB.properties? I am using
> ojb1.0.1.
> > Any help is appreciated. Thanks. 
> > 
> > Regards,
> > -Vamsi
> > 
> > --- Armin Waibel <[EMAIL PROTECTED]> wrote:
> > 
> >> Hi Vamsi,
> >>
> >> Vamsi Atluri wrote:
> >>> Hello all,
> >>>
> >>> I am having problem with getting my transactions rolled back. I have
> >> read
> >>> the documentation a bit about OTM but I am not clear about what I
> >> should
> >>> do in my situation.
> >>>
> >>> I am using OJB1.0.1 for DB2 and running on WAS 5.0 (currently
> testing
> >> on
> >>> WSAD 5.1.2). My data save code looks something like this:
> >>>
> >> You have two possibilities:
> >>
> >> 1. Using OJB in non-managed environments (without delegating
> transaction
> >>
> >> handling to JTA - provided by WSAD). Use of the default 
> 
=== message truncated ===


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

Reply via email to