You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Dino <di...@yahoo.it> on 2004/08/06 11:03:23 UTC

Problems with Transaction Management in ejbCreate()

Dear all,
I encountered some problems with Transaction Management porting my J2EE 
application from Ora9ias 9.0.2 to Ora9ias 9.0.3 platform.
I tried to reproduce the problem with a simple J2EE application made up of a 
test stateless session bean with a single business method.
This very simple J2EE application is deployed successfully both in Ora9ias 
9.0.2 and Ora9ias 9.0.3.
The business method (test_odmg()) can be successfully invoked by a RMI client 
on the Ora9ias 9.0.2 deployment.
On the Ora9ias 9.0.3 deployment however I get the following error:

The following exception has been catched: Error in ejbCreate(): No external 
transaction found; nested exception is:
        org.odmg.TransactionNotInProgressException: No external transaction 
found
	com.evermind.server.rmi.OrionRemoteException: Error in ejbCreate(): No 
external transaction found
        at com.evermind.server.ejb.StatelessSessionEJBHome.getContextInstance
(StatelessSessionEJBHome.java:267)
        at OJBTest_ODMG_StatelessSessionBeanWrapper52.test_odmg
(OJBTest_ODMG_StatelessSessionBeanWrapper52.java:83)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:119)
        at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run
(PooledExecutor.java:803)
        at java.lang.Thread.run(Thread.java:479)
	at connection to c99-012.prirm.pride.it/10.2.21.8 as admin
        at 
com.evermind.server.rmi.RMIConnection.EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERV
ER(RMIConnection.java:1558)
        at com.evermind.server.rmi.RMIConnection.invokeMethod
(RMIConnection.java:1511)
        at com.evermind.server.rmi.RemoteInvocationHandler.invoke
(RemoteInvocationHandler.java:55)
        at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke
(RecoverableRemoteInvocationHandler.java:22)
        at 
com.evermind.server.ejb.StatelessSessionRemoteInvocationHandler.invoke
(StatelessSessionRemoteInvocationHandler.java:50)
        at __Proxy4.test_odmg(Unknown Source)
        at it.enidata.psv.ejb.client.TestOJB_ODMG.main(TestOJB_ODMG.java:45)

        Nested exception is:
	org.odmg.TransactionNotInProgressException: No external transaction 
found
        at org.apache.ojb.odmg.JTATxManager.registerTx(Unknown Source)
        at org.apache.ojb.odmg.TransactionImpl.begin(Unknown Source)
        at org.apache.ojb.odmg.ImplementationJTAImpl.beginInternTransaction
(Unknown Source)
        at org.apache.ojb.odmg.ImplementationJTAImpl.registerOpenDatabase
(Unknown Source)
        at org.apache.ojb.odmg.DatabaseImpl.open(Unknown Source)
        at it.enidata.psv.ejb.account.OJBTest_ODMGBean.init
(OJBTest_ODMGBean.java:99)
        at it.enidata.psv.ejb.account.OJBTest_ODMGBean.ejbCreate
(OJBTest_ODMGBean.java:41)
        at OJBTest_ODMGHome_StatelessSessionHomeWrapper53.callCreate
(OJBTest_ODMGHome_StatelessSessionHomeWrapper53.java:145)
        at com.evermind.server.ejb.StatelessSessionEJBHome.getContextInstance
(StatelessSessionEJBHome.java:254)
        at OJBTest_ODMG_StatelessSessionBeanWrapper52.test_odmg
(OJBTest_ODMG_StatelessSessionBeanWrapper52.java:83)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:119)
        at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run
(PooledExecutor.java:803)
        at java.lang.Thread.run(Thread.java:479)
	at connection to c99-012.prirm.pride.it/10.2.21.8
        at com.evermind.server.rmi.OrionRemoteException.receive
(OrionRemoteException.java:130)
        at com.evermind.server.rmi.RMIConnection.handleMethodInvocationResponse
(RMIConnection.java:1673)
        at com.evermind.server.rmi.RMIConnection.run(RMIConnection.java:532)
        at com.evermind.server.rmi.RMIConnection.run(RMIConnection.java:275)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run
(PooledExecutor.java:797)
        at java.lang.Thread.run(Thread.java:484)

The error arises in the ejbCreate() as soon as the db.open() is invoked. 
- If I move the OJB initialization into the business method (leaving the EJB 
as "stateless") the error disappears.
- If I change the deployment descriptor from "stateless" to "stateful" 
(leaving the OJB initialization into the ejbCreate()) the error disappears.
What is the rationale behind this behaviour?

Here below you will find 
- the source code of the test session bean
- the deployment descriptor
- the OJB.properties

Any assitance in the matter would be great. 
Thanks in advance.

Regards,


Dino.
--

***********************************************************************
**** Source code for the session bean *********************************
***********************************************************************
public class OJBTest_ODMGBean implements SessionBean {
	
  private SessionContext sessionContext;
  private static final String DEF_DATABASE_NAME = "dsOJB";
  
  private Implementation odmg;
  private Database db;
  
  public OJBTest_ODMGBean() {}
  
  public void ejbActivate() {
  }
  
  public void ejbPassivate() {
  }
  
  public void ejbCreate() throws CreateException {
  	try {
  		init();
  	} catch (InitException e) {
  		throw new CreateException(e.getMessage());
  	}  	
  }

  private void init() throws InitException{
  	Logger logger = Logger.getLogger("psv.j2ee.testing");
  	logger.debug("OJBTest_ODMGBean - test_odmg(): begin");

	logger.debug("OJBTest_ODMGBean - test_odmg(): initializing ODMG 
connection [BEGIN]");
 
	logger.debug("OJBTest_ODMGBean - test_odmg(): OJB.getInstance()");
	odmg = OJB.getInstance();  	 
	logger.debug("OJBTest_ODMGBean - test_odmg(): found Implementation 
instance [" + odmg + "]");
	
	logger.debug("OJBTest_ODMGBean - test_odmg(): odmg.newDatabase()");
	db = odmg.newDatabase();
  	 
	try {
		logger.debug("OJBTest_ODMGBean - test_odmg(): open new 
database " + db + " using databaseName name " + DEF_DATABASE_NAME);
		db.open(DEF_DATABASE_NAME, 
Database.OPEN_READ_WRITE);            
	} catch (ODMGException e) {
		logger.error("OJBTest_ODMGBean - test_odmg(): Database open 
failed", e);
		throw new InitException(e.getMessage());
	} 
	
	logger.debug("OJBTest_ODMGBean - test_odmg(): initializing ODMG 
connection [END]");	
  }
  
  public void ejbRemove() {
  	Logger logger = Logger.getLogger("psv.j2ee.testing");
  	logger.debug("OJBTest_ODMGBean - ejbRemove(): closing ODMG connection 
[BEGIN]");
  	try {
  		logger.debug("OJBTest_ODMGBean - ejbRemove(): db.close(): " +  
db);
  		if (db != null) db.close();
  	} catch (ODMGException e) {
  		logger.error("OJBTest_ODMGBean - ejbRemove(): closing of 
database failed", e);
  	}  	
  	db = null;
  	odmg = null;
  	logger.debug("OJBTest_ODMGBean - ejbRemove(): closing ODMG connection 
[END]"); 
  }
  
  public void setSessionContext(SessionContext sessionContext) {
    this.sessionContext = sessionContext;
  }
  
  public String test_odmg() throws java.rmi.RemoteException {
  	Logger logger = Logger.getLogger("psv.j2ee.testing");  	
  	logger.debug("OJBTest_ODMGBean - test_odmg(): end");
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy 
hh:mm:ss");
    	return "OJBTest_ODMGBean - test_odmg(): done [" +  
simpleDateFormat.format(Calendar.getInstance().getTime()) + "]";
  }
  
}


***********************************************************************
**** Deployment descriptor ********************************************
***********************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>OJBTest_ODMG</ejb-name>
      <home>it.enidata.psv.ejb.account.OJBTest_ODMGHome</home>
      <remote>it.enidata.psv.ejb.account.OJBTest_ODMG</remote>
      <ejb-class>it.enidata.psv.ejb.account.OJBTest_ODMGBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
  <assembly-descriptor>
    <container-transaction>
      <method>
        <ejb-name>OJBTest_ODMG</ejb-name>
        <method-name>*</method-name>
      </method>
      <trans-attribute>NotSupported</trans-attribute>
    </container-transaction>
  </assembly-descriptor>
</ejb-jar>

***********************************************************************
**** 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.2 2004/07/19 13:52:56 d.dicola 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.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.PersistenceBrokerFacto
ryDefaultImpl
# 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.PersistenceBrokerFact
orySyncImpl
#
#
# 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.ConnectionFactoryPool
edImpl
#ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryNotP
ooledImpl
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManag
edImpl
#ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryDBCP
Impl
#
#
#------------------------------------------------------------------------------
----------
# ConnectionManager
#------------------------------------------------------------------------------
----------
# The ConnectionManagerClass entry defines the ConnectionManager 
implemementation to be used
ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerImpl
#
#
#------------------------------------------------------------------------------
----------
# SqlGenerator
#------------------------------------------------------------------------------
----------
# The SqlGeneratorClass entry defines the SqlGenerator implemementation to be 
used
SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl
#
#
#------------------------------------------------------------------------------
----------
# 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.IndirectionHandlerDefa
ultImpl
#
#------------------------------------------------------------------------------
----------
# 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.CollectionProxyDefaultImp
l
#
#------------------------------------------------------------------------------
----------
# 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.StatementsForClassImp
l
#
#
#------------------------------------------------------------------------------
----------
# JdbcAccess
#------------------------------------------------------------------------------
----------
# The JdbcAccessClass entry defines the JdbcAccess implemementation to be used
JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl
#
#
#------------------------------------------------------------------------------
----------
# 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.apache.
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.ManageableArrayList
# 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.ImplementationDefaultImpl
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.
# - 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.PersistentField
DirectAccessImpl
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFiel
dPrivilegedImpl
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFiel
dIntrospectorImpl
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFiel
dDynaBeanAccessImpl
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFiel
dAutoProxyImpl
#
#
#------------------------------------------------------------------------------
----------
# 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.JBossTransacti
onManagerFactory
# Weblogic Transaction Manager Factory
#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WeblogicTransa
ctionManagerFactory
# WebSphere transaction manager factory
#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.WebSphereTrans
actionManagerFactory
# Orion transaction manager factory
JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.OrionTransactio
nManagerFactory
# SunOne transaction manager factory
#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.SunOneTransact
ionManagerFactory
# JOnAs transaction manager factory
#JTATransactionManagerClass=org.apache.ojb.broker.transaction.tm.JOnASTransacti
onManagerFactory
#
#
#------------------------------------------------------------------------------
----------
# Logging
#------------------------------------------------------------------------------
----------
# The LoggerClass entry tells OJB which concrete Logger
# implementation is to be used.
#
# Commons-logging
#LoggerClass=org.apache.ojb.broker.util.logging.CommonsLoggerImpl
# log4j based logging
LoggerClass=org.apache.ojb.broker.util.logging.Log4jLoggerImpl
# OJB's own simple looging support
#LoggerClass=org.apache.ojb.broker.util.logging.PoorMansLoggerImpl
LoggerConfigFile=log4j.properties
#
# The LogLevel entries tells OJB which LogLevels are active
# for the different loggers used within OJB
# Loglevels: DEBUG < INFO < WARN < ERROR < FATAL
# That is loglevel WARN won't log DEBUG and INFO messages,
# but will log WARN, ERROR, and FATAL messages
#
# Global default log level used for all logging
# entities if not specified
ROOT.LogLevel=DEBUG
#
# The Default Logger instance used within OJB
DEFAULT.LogLevel=DEBUG
# Logger for PersistenceBrokerImpl class
org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=DEBUG
# Logger for PersistenceBrokerFactory class PersistenceBrokerFactoryDefaultImpl
org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=DEBUG
# Logger for RepositoryXmlHandler, useful for debugging parsing of 
repository.xml!
# persistence capable object metadata
org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=DEBUG
# Logger for ConnectionDescriptorXmlHandler, useful for debugging parsing of 
repository.xml!
# connection specific metadata
org.apache.ojb.broker.metadata.ConnectionDescriptorXmlHandler.LogLevel=DEBUG
# Logger for JdbcAccess, useful for debugging JDBC related problems
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.LogLevel=DEBUG
# Logger for RsIterator, useful for debugging problems with Object 
materialization
org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=DEBUG
# Logger for StatementsForClass, useful for debugging JDBC Connection related 
problems
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.LogLevel=DEBUG
# Logger for SqlGenerator, useful for debugging generation of SQL
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG
# Logger for RepositoryPersistor
org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=DEBUG
# Logger for ConnectionFactory base class
org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=DEBUG
# Logger for ConnectionManager
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.LogLevel=DEBUG
# Logger for IndirectionHandler class
org.apache.ojb.broker.core.proxy.IndirectionHandler.LogLevel=DEBUG
#
# Special Logger categories used in test suite and tutorials
#
# Logger for the ODMG Implementation
ODMG.LogLevel=DEBUG
# Logger for the JDO RI Implementation
JDO.LogLevel=DEBUG
# Logger for the performance tests
performance.LogLevel=DEBUG
# Logger for the soda api
soda.LogLevel=DEBUG
# Logger for the factory service
ConfigurableFactory.LogLevel=DEBUG
#
#
#------------------------------------------------------------------------------
----------
# End of OJB.properties file
#------------------------------------------------------------------------------
----------



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org