Hi Armin, Yes I did.
regards, André -----Original Message----- From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Freitag, 2. Juli 2004 14:25 To: OJB Users List Subject: Re: JBoss have to close connection in managed environment and nested EJB calls Hi Andre, do you set PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFa ctorySyncImpl in OJB.properties? regards, Armin André Markwalder wrote: > Hi, > > I've got the following problem with OJB and JBoss in a managed environment. > > I do an EJB call to ejbA. Within that EJB I request a PersistenceBroker. > After > that request I call a second EJB. Let's call it ejbB. Within ejbB I request > the same PersistenceBroker. After processing ejbB I release (close) the > PersistenceBroker. In ejbA I release (close) also the PersistenceBroker. > > The problem is that JBoss informs me, that it has to close a connection for > me and I should do it myself. > > If I close the PersistenceBroker before I call ejbB and reobtain the > PersistenceBroker afterwards everything works fine. > > It seems if I do a nested EJB call (nested retrieval of PersistenceBroker), > OJB > doesn't close all the connections. > > Did I something wrong or did I have misconfigured something within JBoss or > OJB? > > I configured OJB as described in the documentation (deployment section). > > Below you will find the sample source code, JBoss log and OJB.properties > file. > > I use JBoss 3.2.2 (tried also with 3.2.5 same effects) and OJB 1.0.0. > > > > Thanks in advance for any help. > > André > > > > > Sample source code from EJB: > > /** > * @ejb.interface-method > * @ejb.permission role-name="admin,user" > **/ > public void test1() { > > System.out.println("GETBROKER 1"); > PersistenceBroker broker = > PersistenceBrokerFactoryFactory.instance().defaultPersistenceBroker(); > > try { > System.out.println("TEST1"); > > InitialContext ctx = new InitialContext(); > AesUserLocalHome home = > (AesUserLocalHome)ctx.lookup(AesUserLocalHome.JNDI_NAME); > AesUserLocal tmp = home.create(); > tmp.test2(); > > } catch (NamingException e) { > e.printStackTrace(); > } catch (CreateException e) { > e.printStackTrace(); > } > finally { > System.out.println("BROKER CLOSED 1"); > if (broker != null) { > broker.close(); > } > } > } > > /** > * @ejb.interface-method > * @ejb.permission role-name="admin,user" > **/ > public void test2() { > System.out.println("GETBROKER 2"); > PersistenceBroker broker = > PersistenceBrokerFactoryFactory.instance().defaultPersistenceBroker(); > > try { > System.out.println("TEST2"); > } > finally { > System.out.println("BROKER CLOSED 2"); > if (broker != null) { > broker.close(); > } > } > } > > > > > JBOSS log: > > 13:58:16,232 DEBUG [PersistenceBrokerFactoryDefaultImpl] PersistenceBroker > pool will be setup with the following configuration > org.apache.commons.pool.impl.Gene > [EMAIL PROTECTED] > maxIdle=-1 > maxActive=100 > maxTotal=-1 > maxWait=2000 > whenExhaustedAction=0 > testOnBorrow=false > testOnReturn=false > testWhileIdle=false > timeBetweenEvictionRunsMillis=-1 > numTestsPerEvictionRun=10 > minEvictableIdleTimeMillis=1000000 > ] > 13:58:16,242 INFO [PersistenceBrokerFactoryDefaultImpl] Create > PersistenceBroker instance pool, pool configuration was > {whenExhaustedAction=0, maxIdle=-1, maxA > ctive=100, maxWait=2000, removeAbandoned=false, numTestsPerEvictionRun=10, > testWhileIdle=false, minEvictableIdleTimeMillis=1000000, testOnReturn=false, > logAband > oned=false, removeAbandonedTimeout=300, timeBetweenEvictionRunsMillis=-1, > testOnBorrow=false} > > > > 13:58:16,262 INFO [STDOUT] GETBROKER 1 > 13:58:17,114 DEBUG [PersistenceBrokerFactoryDefaultImpl] Obtain broker from > pool, used PBKey is org.apache.ojb.broker.PBKey: jcdAlias=APPSERVER_AES, > user=null,password=null > 13:58:17,235 INFO [STDOUT] TEST1 > 13:58:17,235 INFO [STDOUT] GETBROKER 2 > 13:58:17,235 INFO [STDOUT] TEST2 > 13:58:17,235 INFO [STDOUT] BROKER CLOSED 2 > 13:58:17,235 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] PB close was > called, only close the PB handle when in JTA-tx > 13:58:17,235 INFO [STDOUT] BROKER CLOSED 1 > 13:58:17,235 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] PB close was > called, only close the PB handle when in JTA-tx > 13:58:17,235 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] > beforeCompletion was called, nothing to do > 13:58:17,255 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] afterCompletion > was called > 13:58:17,255 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] Commit PB-tx > 13:58:17,255 DEBUG > [PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl] Now do real > close of PB instance > 13:58:17,255 INFO [CachedConnectionManager] Closing a connection for you. > Please close them yourself: > [EMAIL PROTECTED] > > java.lang.Exception: STACKTRACE > at > org.jboss.resource.connectionmanager.CachedConnectionManager.registerConnect > ion(CachedConnectionManager.java:285) > at > org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnecti > on(BaseConnectionManager2.java:525) > at > org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManage > rProxy.allocateConnection(BaseConnectionManager2.java:887) > at > org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataS > ource.java:102) > at > org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.newConnectio > nFromDataSource(ConnectionFactoryAbstractImpl.java:204) > at > org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.lookupConnec > tion(ConnectionFactoryAbstractImpl.java:112) > at > org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl.lookupConnect > ion(ConnectionFactoryManagedImpl.java:33) > at > org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.getConnection(Connec > tionManagerImpl.java:105) > at > org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localBegin(Connectio > nManagerImpl.java:147) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.beginTransaction(Persistenc > eBrokerImpl.java:394) > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTransaction(Dele > gatingPersistenceBroker.java:138) > at > org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl$PersistenceBroke > rSyncImpl.internBegin(PersistenceBrokerFactorySyncImpl.java:280) > at > org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl$PersistenceBroke > rSyncImpl.access$000(PersistenceBrokerFactorySyncImpl.java:225) > at > org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl.wrapRequestedBro > kerInstance(PersistenceBrokerFactorySyncImpl.java:153) > at > org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPersist > enceBroker(PersistenceBrokerFactoryDefaultImpl.java:105) > at > org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl.createPersistenc > eBroker(PersistenceBrokerFactorySyncImpl.java:116) > at > org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.defaultPersisten > ceBroker(PersistenceBrokerFactoryBaseImpl.java:158) > at > com.alabus.aes.server.ejb.application.system.AesUserBean.test1(AesUserBean.j > ava:205) > at java.lang.reflect.Method.invoke(Native Method) > at > org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stateles > sSessionContainer.java:683) > at > org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(Cach > edConnectionInterceptor.java:185) > at > org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSe > ssionInstanceInterceptor.java:72) > at > org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor > .java:84) > at > org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT. > java:315) > at > org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:148) > at > org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:12 > 0) > at > org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191) > at > org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinde > rInterceptor.java:122) > at > org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionConta > iner.java:331) > at org.jboss.ejb.Container.invoke(Container.java:723) > at java.lang.reflect.Method.invoke(Native Method) > at > org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60 > ) > at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61) > at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53) > at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) > at > org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:18 > 5) > at > org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473) > at > org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:360) > at java.lang.reflect.Method.invoke(Native Method) > at > sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) > at sun.rmi.transport.Transport$1.run(Transport.java:147) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:143) > at > sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) > at > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:7 > 01) > at java.lang.Thread.run(Thread.java:479) > > > > > > OJB.properties > > #<!-- > #/* Copyright 2002-2004 The Apache Software Foundation > # * > # * Licensed under the Apache License, Version 2.0 (the "License"); > # * you may not use this file except in compliance with the License. > # * You may obtain a copy of the License at > # * > # * http://www.apache.org/licenses/LICENSE-2.0 > # * > # * Unless required by applicable law or agreed to in writing, software > # * distributed under the License is distributed on an "AS IS" BASIS, > # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > # * See the License for the specific language governing permissions and > # * limitations under the License. > # */ > #--> > # OJB.properties -- configuration of the OJB runtime environment > # Version: 1.0 > # (c) 2001, 2002, 2003 Apache Software Foundation > # Author: Thomas Mahler and many others > # @version $Id: OJB.properties,v 1.75 2004/06/27 23:36:23 arminw Exp $ > # > #--------------------------------------------------------------------------- > ------------- > # repository file settings > #--------------------------------------------------------------------------- > ------------- > # The repositoryFile entry tells OJB to use this file as as its standard > mapping > # repository. The file is looked up from the classpath. > # > repositoryFile=repository/repository.xml > # > # If the useSerializedRepository entry is set to true, OJB tries to load a > # serialized version of the repository for performance reasons. > # if set to false, OJB always loads the xml file. > # Setting this flag to true will accelerate the startup sequence of OJB. > # If set to true changes to the repository.xml file will only be detected > # after maually deleting the repository.xml.serialized file. > useSerializedRepository=false > # > # If Repository serialization is used the entry serializedRepositoryPath > defines the > # directory where the Repository is written to and read from. > # this entry is used only when the useSerializedRepository flag is set to > true > # > serializedRepositoryPath=. > # > #--------------------------------------------------------------------------- > ------------- > # PersistenceBrokerFactory / PersistenceBroker > #--------------------------------------------------------------------------- > ------------- > # The PersistenceBrokerFactoryClass entry decides which concrete > # PersistenceBrokerFactory implemention is to be used. > #PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerF > actoryDefaultImpl > # If in managed environment *only* the PB-api was used it's recommended to > use this factory > # to enable the PersistenceBroker instances to participate in the JTA > transaction. This makes > # e.g. PBStateListener work properly in managed environments. > PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFa > ctorySyncImpl > # > # > # The PersistenceBrokerClass entry decides which concrete PersistenceBroker > # implementation is to be served by the PersistenceBrokerFactory. > # This is the singlevm implementation: > #PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl > # > # This is an implementation that uses Prevayler (prevayler.sf.net) as the > persistent storage. > # Using this implementation OJB works as a simple OODBMS > #PersistenceBrokerClass=org.apache.ojb.broker.prevayler.PBPrevaylerImpl > # > #--------------------------------------------------------------------------- > ------------- > # PersistenceBroker pool > #--------------------------------------------------------------------------- > ------------- > # PersistenceBroker pool configuration > # This pool uses the jakarta-commons-pool api. > # There you can find things described in detail. > # > # maximum number of brokers that can be borrowed from the > # pool at one time. When non-positive, there is no limit. > maxActive=100 > # > # controls the maximum number of brokers that can sit idle in the > # pool (per key) at any time. When non-positive, there is no limit > maxIdle=-1 > # > # max time block to get broker instance from pool, after that exception is > thrown. > # When non-positive, block till last judgement > maxWait=2000 > # > # indicates how long the eviction thread should sleep before "runs" of > examining > # idle objects. When non-positive, no eviction thread will be launched. > timeBetweenEvictionRunsMillis=-1 > # > # specifies the minimum amount of time that an broker may sit idle > # in the pool before it is eligable for eviction due to idle time. > # When non-positive, no object will be dropped from the pool due > # to idle time alone (depends on timeBetweenEvictionRunsMillis > 0) > minEvictableIdleTimeMillis=1000000 > # > # specifies the behaviour of the pool when broker capacity is > # exhausted (see maxActive above) > # 0 - fail > # 1 - block > # 2 - grow > whenExhaustedAction=0 > # > # > #--------------------------------------------------------------------------- > ------------- > # ConnectionFactory / Default ConnectionPool > #--------------------------------------------------------------------------- > ------------- > # The ConnectionFactoryClass entry determines which kind of > ConnectionFactory > # is to be used within org.apache.ojb as connection factory. > # A ConnectionFactory is responsible for creating > # JDBC Connections. Current version ships four implementations: > # > # 1. ConnectionFactoryNotPooledImpl > # No pooling, no playing around. > # Every connection request returns a new connection, > # every connection release close the connection. > # 2. ConnectionFactoryPooledImpl > # This implementation supports connection pooling. > # 3. ConnectionFactoryDBCPImpl > # Using the jakarta-DBCP api for connection management, support > # connection- and prepared statement-pooling, abandoned connection > handling. > # 4. ConnectionFactoryManagedImpl > # Connection factory for use within managed environments - e.g. JBoss. > # Every obtained DataSource was wrapped within OJB (and ignore > # e.g. con.commit() calls within OJB). > # Use this implementation e.g if you use Datasources from an application > server. > # > # Use the OJB performance tests to decide, which implementation is best for > you. > # The proper way of obtaining a connection is configured in > # JDBCConnectionDescriptor entries in the repository.xml file. > # If want a more fine grained control of each connection pool used by OJB, > # take a look at the repository.dtd, there was a possibility to override > # this default connection factory entry in each JDBCConnectionDescriptor. > # > #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryP > ooledImpl > #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryN > otPooledImpl > ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryMa > nagedImpl > #ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryD > BCPImpl > # > # > #--------------------------------------------------------------------------- > ------------- > # ConnectionManager > #--------------------------------------------------------------------------- > ------------- > # The ConnectionManagerClass entry defines the ConnectionManager > implemementation to be used > ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerIm > pl > # > # > #--------------------------------------------------------------------------- > ------------- > # SqlGenerator > #--------------------------------------------------------------------------- > ------------- > # The SqlGeneratorClass entry defines the SqlGenerator implemementation to > be used > SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultI > mpl > # > # > #--------------------------------------------------------------------------- > ------------- > # IndirectionHandler > #--------------------------------------------------------------------------- > ------------- > # The IndirectionHandlerClass entry defines the class to be used by OJB's > proxies to > # handle method invocations > # > IndirectionHandlerClass=org.apache.ojb.broker.core.proxy.IndirectionHandlerD > efaultImpl > # > #--------------------------------------------------------------------------- > ------------- > # ListProxy > #--------------------------------------------------------------------------- > ------------- > # The ListProxyClass entry defines the proxy class to be used for > collections that > # implement the java.util.List interface. > # > ListProxyClass=org.apache.ojb.broker.core.proxy.ListProxyDefaultImpl > # > #--------------------------------------------------------------------------- > ------------- > # SetProxy > #--------------------------------------------------------------------------- > ------------- > # The SetProxyClass entry defines the proxy class to be used for collections > that > # implement the java.util.Set interface. > # > SetProxyClass=org.apache.ojb.broker.core.proxy.SetProxyDefaultImpl > # > #--------------------------------------------------------------------------- > ------------- > # CollectionProxy > #--------------------------------------------------------------------------- > ------------- > # The CollectionProxyClass entry defines the proxy class to be used for > collections that > # do not implement java.util.List or java.util.Set. > # > CollectionProxyClass=org.apache.ojb.broker.core.proxy.CollectionProxyDefault > Impl > # > #--------------------------------------------------------------------------- > ------------- > # StatementManager > #--------------------------------------------------------------------------- > ------------- > # The StatementManagerClass entry defines the StatementManager > implemementation to be used > StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager > # > # > #--------------------------------------------------------------------------- > ------------- > # StatementsForClass > #--------------------------------------------------------------------------- > ------------- > # The StatementsForClassClass entry defines the StatementsForClass > implemementation to be used > # to implement cached statements. > StatementsForClassClass=org.apache.ojb.broker.accesslayer.StatementsForClass > Impl > # > # > #--------------------------------------------------------------------------- > ------------- > # JdbcAccess > #--------------------------------------------------------------------------- > ------------- > # The JdbcAccessClass entry defines the JdbcAccess implemementation to be > used > JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl > # > # > #--------------------------------------------------------------------------- > ------------- > # RowReader > #--------------------------------------------------------------------------- > ------------- > # Set the standard RowReader implementation. It is also possible to specify > the > # RowReader on class-descriptor level. > RowReaderDefaultClass=org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl > # > #--------------------------------------------------------------------------- > ------------- > # Object cache > #--------------------------------------------------------------------------- > ------------- > # The ObjectCacheClass entry tells OJB which concrete ObjectCache > # implementation is to be used as standard cache. > # Its also possible to override this entry adding object-cache elements > # on jdbc-connection-descriptor level and > # per class-descriptor in repository file. More info see documentation. > # > ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheDefaultImpl > #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl > #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCachePerBrokerImpl > #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheJCSPerClassImpl > #ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCachePerClassImpl > # > # > # This property is only relevant if the per class-descriptor object-cache > # declaration was used in conjunction with metadata runtime changes. > # If set 'flase' the class name of the object is used > # to find a per class ObjectCache implementation. > # If set 'true' the ObjectCacheDescriptor instance is used as key to > # find a per class ObjectCache, this enables to use different ObjectCache > # instances for the same class. > descriptorBasedCaches=false > # > # > # Use CacheFilters to do filter operations before caching methods were > # called. Build your own filter class by implementing > org.apache.ojb.cache.CacheFilter. > # It is possible to use a arbitrary number of CacheFilters, but this slows > # down the performance of the cache, thus handle with care. > # > # - org.apache.ojb.broker.cache.CacheFilterClassImpl > # allows filtering of classes > # - org.apache.ojb.broker.cache.CacheFilterPackageImpl > # allows filtering of packages > # More info see Javadoc of the according classes. > # Set a comma separated list of CacheFilter. > #ObjectCacheFilter=org.apache.ojb.broker.cache.CacheFilterClassImpl,org.apac > he.ojb.broker.cache.CacheFilterPackageImpl > # > #--------------------------------------------------------------------------- > ------------- > # Locking > #--------------------------------------------------------------------------- > ------------- > # The LockManagerClass entry tells OJB which concrete LockManager > # implementation is to be used. > LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl > # > # The LockMapClass entry tells OJB which concrete LockMap > # implementation is to be used. > # If OJB is running on multiple concurrent clients it is recommended > # to use the RemoteLockMapImpl. It guarantees to provide > # Lockmanagement across multiple JVMs. > # This Implemenation relies on a Servlet based Lockserver. To use it you > have to > # deploy the ojb-lockserver.war into a Servlet engine. > # and you have to set the Property LockServletUrl to point to this servlet. > # (see LockServletUrl section below). > # If OJB is running in a single JVM (e.g. in a desktop app, or in a servlet > # engine) it is save to use the InMemoryLockMapImpl. Using it will result > # in a large performance gain. > #LockMapClass=org.apache.ojb.odmg.locking.RemoteLockMapImpl > LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl > # > # The LockTimeout entry defines the maximum time in milliseconds > # that a lock may be hold. Defaults to 60000 = 1 minute > LockTimeout=60000 > # > # The ImplicitLocking entry defines if implicit lock acquisition is > # to be used. If set to true OJB implicitely locks objects to ODMG > # transactions after performing OQL queries. > # If implicit locking is used locking objects is recursive, that is > # associated objects are also locked. > # If ImplicitLocking is set to false, no locks are obtained in OQL > # queries and there is also no recursive locking. > ImplicitLocking=true > #ImplicitLocking=false > # > # > # The LockServletUrl entry points to the Lockserver servlet. > # This Servlet is addressed by all distributed JVMs if the RemoteLockMapImpl > # is used. > LockServletUrl=http://127.0.0.1:8080/ojb-lockserver > # > # > # The LockAssociations entry defines the behaviour for the OJB > # implicit locking feature. If set to WRITE (default) acquiring a write- > # lock on a given object x implies write locks on all objects associated > # to x. If set to READ implicit read-locks are acquired. > # Acquiring a read-lock on x thus allways results in implicit read-locks > # on all associated objects. > #LockAssociations=READ > LockAssociations=WRITE > # > # > #--------------------------------------------------------------------------- > ------------- > # OQL / SQL settings > #--------------------------------------------------------------------------- > ------------- > # The OqlCollectionClass entry defines the collection type returned > # from OQL queries. By default this value is set to DListImpl. > # This will be good for most situations as DList allows maximum flexibility > # in a ODMG environment. See also section 'ODMG settings'. > # Using DLists for large resultsets may be bad for application performance. > # For these scenarios you can use ArrayLists or Vectors. > # Important note: the collections class to be used MUST implement the > # interface org.apache.ojb.broker.ManageableCollection. > # > OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl_2 > # > OqlCollectionClass=org.apache.ojb.broker.util.collections.ManageableArrayLis > t > # OqlCollectionClass=org.apache.ojb.broker.util.ManageableVector > # > # The SqlInLimit entry limits the number of values in IN-sql statement, > # -1 for no limits. This hint is used in Criteria. > SqlInLimit=200 > # > # > #--------------------------------------------------------------------------- > ------------- > # ODMG settings > #--------------------------------------------------------------------------- > ------------- > # Specify the used base class for ODMG API > # - ImplementationDefaultImpl is the default class > # - ImplementationJTAImpl is for use in managed environments like J2EE > conform > # Application Server > # > #ImplementationClass=org.apache.ojb.odmg.ImplementationImpl > ImplementationClass=org.apache.ojb.odmg.ImplementationJTAImpl > # > # > # Specify the used tx handling. > # - LocalTxManager use if you want the transaction to be associated by a > thread > # - JTATxManager use if you want the transaction to be associated via the > Transaction > # manager that is in your application server. > # > #OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager > OJBTxManagerClass=org.apache.ojb.odmg.JTATxManager > # > # > # Used ODMG collection implementation classes > # (e.g. when do a Implementation#newDlist() call) > # > # org.odmg.DList implementation class > DListClass=org.apache.ojb.odmg.collections.DListImpl_2 > #DListClass=org.apache.ojb.odmg.collections.DListImpl > # > # org.odmg.DArray implementation class > DArrayClass=org.apache.ojb.odmg.collections.DListImpl_2 > #DArrayClass=org.apache.ojb.odmg.collections.DListImpl > # > # org.odmg.DMap implementation class > DMapClass=org.apache.ojb.odmg.collections.DMapImpl > # > # org.odmg.DBag implementation class > DBagClass=org.apache.ojb.odmg.collections.DBagImpl > # > # org.odmg.DSet implementation class > DSetClass=org.apache.ojb.odmg.collections.DSetImpl > # > # > #--------------------------------------------------------------------------- > ------------- > # Meta data / mapping settings > #--------------------------------------------------------------------------- > ------------- > # The PersistentFieldClass property defines the implementation class > # for PersistentField attributes used in the OJB MetaData layer. > # By default the best performing attribute/refection based implementation > # is selected (PersistentFieldDirectAccessImpl). > # > # - PersistentFieldDirectAccessImpl > # is a high-speed version of the access strategies. > # It does not cooperate with an AccessController, > # but accesses the fields directly. Persistent > # attributes don't need getters and setters > # and don't have to be declared public or protected > # - PersistentFieldPrivilegedImpl > # Same as above, but does cooperate with AccessController and do not > # suppress the java language access check (but is slow compared with > direct access). > # - PersistentFieldIntrospectorImpl > # uses JavaBeans compliant calls only to access persistent attributes. > # No Reflection is needed. But for each attribute xxx there must be > # public getXxx() and setXxx() methods. > # - PersistentFieldDynaBeanAccessImpl > # implementation used to access a property from a > # org.apache.commons.beanutils.DynaBean. > # - PersistentFieldAutoProxyImpl > # for each field determines upon first access how to access this > particular field > # (directly, as a bean, as a dyna bean) and then uses that strategy > # > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldDirectAccessImpl > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldPrivilegedImpl > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldIntrospectorImpl > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldDynaBeanAccessImpl > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldAutoProxyImpl > # > # Here are the new upcoming PersistentField implementations. These classes > will replace the > # 'old' ones on next release. They pass the test-suite, but should be tested > by community too. > # The new implementations are about 50 times faster in handling nested > fields. > PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFi > eldDirectAccessImplNew > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldPrivilegedImplNew > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldIntrospectorImplNew > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldAutoProxyImpl > #PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentF > ieldDynaBeanImplNew > #(DynaBean implementation does not support nested fields) > # > #--------------------------------------------------------------------------- > ------------- > # Component Intercepting for Profiling and Tracing > #--------------------------------------------------------------------------- > ------------- > # By enabling an InterceptorClass all OJB components will use > # this Interceptor. Interceptors allow advanced tracing and Profiling > # of all component method calls. > # This is currently an experimental feature useful only for OJB kernel > developers. > # > #InterceptorClass=org.apache.ojb.broker.util.interceptor.TracingInterceptor > # > #--------------------------------------------------------------------------- > ------------- > # Transaction Management and assocation > #--------------------------------------------------------------------------- > ------------- > # (optional, only used when OJB runs within managed environments) > # To praticipate in JTA transaction OJB needs access to the underlying > transaction manager. > # The TransactionManager is acquired in different ways dependent on the > application server. > # The JTATransactionManagerClass property allows you to specify the class > that implements > # the proper behaviour for finding the transaction manager. Only use when > OJBTxManagerClass > # is set to a factory that uses the application server transaction manager > # (org.apache.ojb.odmg.JTATxManager) > # > > # JBoss Transaction Manager Factory > JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.JBossTransac > tionManagerFactory > # Weblogic Transaction Manager Factory > #JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WeblogicTra > nsactionManagerFactory > # WebSphere transaction manager factory > #JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WebSphereTr > ansactionManagerFactory > # Orion transaction manager factory > #JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.OrionTransa > ctionManagerFactory > # SunOne transaction manager factory > #JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.SunOneTrans > actionManagerFactory > # JOnAs transaction manager factory > #JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.JOnASTransa > ctionManagerFactory > # > # > #--------------------------------------------------------------------------- > ------------- > # Logging settings are now in their own file, OJB-logging.properties > #--------------------------------------------------------------------------- > ------------- > #--------------------------------------------------------------------------- > ------------- > # End of OJB.properties file > #--------------------------------------------------------------------------- > ------------- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]