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






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



Reply via email to