Hi Guido Same effects on JBoss 3.2.3. JBoss closes the open connection.
regards Andr� -----Original Message----- From: Guido Beutler [mailto:[EMAIL PROTECTED] Sent: Freitag, 2. Juli 2004 15:08 To: OJB Users List Subject: Re: JBoss have to close connection in managed environment and nes ted EJB calls Hi, I had the same problem with jboss 3.2.2 and different OJB versions. The problem was solved at jboss 3.2.3. Armin may remember or long mail threads. :-) I haven't updated to 3.2.5 yet but for me it sounds as if the same problem occurs there again. Could you make a quick check with 3.2.3 ? best regards, Guido Andr� Markwalder wrote: >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.PersistenceBrokerF a >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.registerConnec t > > >>ion(CachedConnectionManager.java:285) >> at >> >> >> >org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnect i > > >>on(BaseConnectionManager2.java:525) >> at >> >> >> >org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManag e > > >>rProxy.allocateConnection(BaseConnectionManager2.java:887) >> at >> >> >> >org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperData S > > >>ource.java:102) >> at >> >> >> >org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.newConnecti o > > >>nFromDataSource(ConnectionFactoryAbstractImpl.java:204) >> at >> >> >> >org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.lookupConne c > > >>tion(ConnectionFactoryAbstractImpl.java:112) >> at >> >> >> >org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl.lookupConnec t > > >>ion(ConnectionFactoryManagedImpl.java:33) >> at >> >> >> >org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.getConnection(Conne c > > >>tionManagerImpl.java:105) >> at >> >> >> >org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localBegin(Connecti o > > >>nManagerImpl.java:147) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerImpl.beginTransaction(Persisten c > > >>eBrokerImpl.java:394) >> at >> >> >> >org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTransaction(Del e > > >>gatingPersistenceBroker.java:138) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl$PersistenceBrok e > > >>rSyncImpl.internBegin(PersistenceBrokerFactorySyncImpl.java:280) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl$PersistenceBrok e > > >>rSyncImpl.access$000(PersistenceBrokerFactorySyncImpl.java:225) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl.wrapRequestedBr o > > >>kerInstance(PersistenceBrokerFactorySyncImpl.java:153) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPersis t > > >>enceBroker(PersistenceBrokerFactoryDefaultImpl.java:105) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl.createPersisten c > > >>eBroker(PersistenceBrokerFactorySyncImpl.java:116) >> at >> >> >> >org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.defaultPersiste n > > >>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(Statele s > > >>sSessionContainer.java:683) >> at >> >> >> >org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(Cac h > > >>edConnectionInterceptor.java:185) >> at >> >> >> >org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessS e > > >>ssionInstanceInterceptor.java:72) >> at >> >> >> >org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxIntercepto r > > >>.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:1 2 > > >>0) >> at >>org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191) >> at >> >> >> >org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFind e > > >>rInterceptor.java:122) >> at >> >> >> >org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionCont a > > >>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:6 0 > > >>) >> 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:1 8 > > >>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.PersistenceBroker F > > >>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.PersistenceBrokerF a > > >>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.ConnectionFactory P > > >>ooledImpl >> >> >> >#ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactory N > > >>otPooledImpl >> >> >> >ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryM a > > >>nagedImpl >> >> >> >#ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactory D > > >>BCPImpl >># >># >> >> >> >#-------------------------------------------------------------------------- - > > >>------------- >># ConnectionManager >> >> >> >#-------------------------------------------------------------------------- - > > >>------------- >># The ConnectionManagerClass entry defines the ConnectionManager >>implemementation to be used >> >> >> >ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerI m > > >>pl >># >># >> >> >> >#-------------------------------------------------------------------------- - > > >>------------- >># SqlGenerator >> >> >> >#-------------------------------------------------------------------------- - > > >>------------- >># The SqlGeneratorClass entry defines the SqlGenerator implemementation to >>be used >> >> >> >SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefault I > > >>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.IndirectionHandler D > > >>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.CollectionProxyDefaul t > > >>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.StatementsForClas s > > >>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.RowReaderDefaultImp l > > >># >> >> >> >#-------------------------------------------------------------------------- - > > >>------------- >># 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.apa c > > >>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.ManageableArrayLi s > > >>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.Persistent F > > >>ieldDirectAccessImpl >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldPrivilegedImpl >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldIntrospectorImpl >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldDynaBeanAccessImpl >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>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.PersistentF i > > >>eldDirectAccessImplNew >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldPrivilegedImplNew >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldIntrospectorImplNew >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>ieldAutoProxyImpl >> >> >> >#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.Persistent F > > >>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.JBossTransa c > > >>tionManagerFactory >># Weblogic Transaction Manager Factory >> >> >> >#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WeblogicTr a > > >>nsactionManagerFactory >># WebSphere transaction manager factory >> >> >> >#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WebSphereT r > > >>ansactionManagerFactory >># Orion transaction manager factory >> >> >> >#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.OrionTrans a > > >>ctionManagerFactory >># SunOne transaction manager factory >> >> >> >#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.SunOneTran s > > >>actionManagerFactory >># JOnAs transaction manager factory >> >> >> >#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.JOnASTrans a > > >>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] > > > > --------------------------------------------------------------------- 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]
