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]