I don't know if this was every acknowledged on the list, my Jboss recognizes that they 
do it this way, and it is how they want to do it.

You can turn off the Connection checking.

http://www.jboss.org/wiki/Wiki.jsp?page=WhatDoesTheMessageDoYourOwnHousekeepingMean

See "Thread Local Pattern"

-Andrew

 

-----Original Message-----
From: André Markwalder [mailto:[EMAIL PROTECTED] 
Sent: Monday, July 05, 2004 5:09 AM
To: OJB Users List
Subject: RE: JBoss have to close connection in managed environment and nes ted EJB 
calls

Hi Armin,

Thanks for spending hours of investigation.

I think it is absolutely correct, that OJB uses only one PersistenceBroker and as you 
described it seems that it is a problem of JBoss.

Again thanks a lot for your detailed description.

regards,
André



-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED]
Sent: Samstag, 3. Juli 2004 17:45
To: OJB Users List
Subject: Re: JBoss have to close connection in managed environment and nes ted EJB 
calls


Hi Andre,

after spending hours of investigation, I think I found the reason for the warning.

Seems JBoss doesn't recognize a connection.close() call when:
- bean 1 create a PB instance and do some work
- in bean 1 another bean (bean 2) was used
- bean 2 create a PB instance. Internal OJB use the same PB instance, thus both use 
the same internal PB instance wrapped by different handle. 
The use PB was already associated with a connection in bean 1, thus bean
2 use the same connection handle.
- now bean 2 close the used PB handle, internal the PB instance only release/close the 
used connection
- now bean 1 perform additional work, thus the PB instance create a new connection 
(because bean 2 close it) and close it after use (PB close call in bean 1)
- bean 1 method ends and the container commit the transaction

Now the problem occur, because JBoss does not recognize that the first connection 
created in bean 1 was closed in bean 2 and log a warning about unclosed connection.

If you comment out line 110 in PersistenceBrokerFactorySyncImpl or use version 1.5 of 
PersistenceBrokerFactorySyncImpl the warning does not occur.

In version 1.6 I introduce that different beans in the same tx use internal the same 
PB instance (think this is similar to DataSource
handling) to avoid massive PB instance creation for bean in bean calls.

See
http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&m
sgId=1693533

The question now is are OJB wrong in handling connections or should JBoss allow this? 
I'm don't know the answer.


******************************************
Here is my test:

Have a look how OJB handles connection '[EMAIL PROTECTED]'
(the bean source code can be found below)

---> test start an lookup first PB in first bean
...
16:53:17,625 INFO  [CacheDistributor] Create new 
ObjectCacheImplementation for 'default'
16:53:17,625 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
16:53:17,625 INFO  [STDOUT] ## broker1: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter.
[EMAIL PROTECTED]

---> query in first bean, connection was created, now we call the nested 
bean

16:53:17,625 INFO  [STDOUT] ####### DO nested bean call
16:53:17,625 INFO  [PersonArticleManagerPBBean] ** Found bean: 
org.apache.ojb.ejb.pb.ArticleManagerPBBeanLocal:Stateless
16:53:17,640 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
16:53:17,640 INFO  [PersistenceBrokerImpl] Cascade store for this 
reference-descriptor (category) was set to false.
...

16:53:17,656 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
16:53:17,656 INFO  [PersistenceBrokerImpl] Cascade store for this 
reference-descriptor (category) was set to false.
16:53:17,656 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
16:53:17,671 ERROR [STDERR] **** release connection: 
[EMAIL PROTECTED] 
connection=org.jboss.resource
[EMAIL PROTECTED] thread: Thread[RMI TCP 
Connection(2)-217.224.94.148,5,RMI Runtime]
16:53:17,671 INFO  [STDOUT] **** close con: 
[EMAIL PROTECTED]
16:53:17,671 INFO  [STDOUT] **** is closed: true
16:53:17,671 INFO  [STDOUT] ####### END nested bean call

---> nested bean call is finished and '[EMAIL PROTECTED]' is 
closed!! But the second bean close the connection created by the first bean.
bean1 now start to insert objects and create a new connection, because 
the first one was closed by the nested bean


16:53:17,671 INFO  [STDOUT] ## broker1: now store objects
16:53:17,671 INFO  [STDOUT] #### create con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]
16:53:17,671 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
16:53:17,671 INFO  [STDOUT] #### lookup con: 
[EMAIL PROTECTED] 
connection=org.jboss.resource.adapter
[EMAIL PROTECTED]: false
...

16:53:18,015 INFO  [STDOUT] ## broker1: end store, 
[EMAIL PROTECTED] 
connection=org.jboss.resour
[EMAIL PROTECTED]
16:53:18,031 INFO  [STDOUT] ## close broker1 now
16:53:18,031 ERROR [STDERR] **** release connection: 
[EMAIL PROTECTED] 
connection=org.jboss.resource
[EMAIL PROTECTED] thread: Thread[RMI TCP 
Connection(2)-217.224.94.148,5,RMI Runtime]
16:53:18,046 INFO  [STDOUT] **** close con: 
[EMAIL PROTECTED]
16:53:18,046 INFO  [STDOUT] **** is closed: true

---> first bean close the second used connection

16:53:18,062 INFO  [CachedConnectionManager] Closing a connection for 
you.  Please close them yourself: 
org.jboss.resource.adapter.jdbc.WrappedConnect
[EMAIL PROTECTED]

---> !!! This connection was closed by the nested bean!!!

java.lang.Exception: STACKTRACE
         at 
org.jboss.resource.connectionmanager.CachedConnectionManager.registerConnect
ion(CachedConnectionManager.java:282)
         at 
org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnecti
on(BaseConnectionManager2.java:506)
         at 
org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManage
rProxy.allocateConnection(BaseConnectionManager2.java:814)
         at 
org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataS
ource.java:122)
         at 
org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.newConnectio
nFromDataSource(ConnectionFactoryAbstractImpl.java:208)
         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:148)
         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)



************************************************************
My test looks like this:

PersistenceBroker broker = pbf.defaultPersistenceBroker();
try
{
     // do something with broker
     Query q = new QueryByCriteria(PersonVO.class, null);
     broker.getCollectionByQuery(q);
     System.out.println("## broker1: con=" + 
broker.serviceConnectionManager().getConnection());
     //now use nested bean call
     System.out.println("####### DO nested bean call");
     ArticleManagerPBLocal am = getArticleManager();
     am.storeArticles(articles);
     System.out.println("####### END nested bean call");
     // do more with broker
     System.out.println("## broker1: now store objects");
     storeObjects(broker, persons);
     System.out.println("## broker1: end store, con=" + 
broker.serviceConnectionManager().getConnection());
}
catch(LookupException e)
{
     throw new EJBException(e);
}
finally
{
     System.out.println("## close broker1 now");
     if(broker != null) broker.close();
}

**************************************************************


Armin


André Markwalder wrote:

> Hi Armin
> 
> I tried the JNDI lookup with the following code and it worked perfectly. 
> JBoss didn't complained about anything.
> 
> 
> regards
> André
> 
> 
>       /**
>        * @ejb.interface-method 
>        * @ejb.permission  role-name="admin,user"
>       **/
>       public void test1() {
>               Connection conn = null;
>               try {
> 
>                       InitialContext ctx = new InitialContext();
>                       DataSource ds =
> (DataSource)ctx.lookup("java:comp/env/jdbc/AESDS_MAXDB_SALUSA_AES");
>                       conn = ds.getConnection();
> 
>                       ResultSet rs =
> conn.createStatement().executeQuery("SELECT COUNT(*) FROM AES_USER");
>                       rs.first();
>                       System.out.println("TEST1: " + rs.getInt(1));
> 
>                       AesUserLocalHome home =
> (AesUserLocalHome)ctx.lookup(AesUserLocalHome.JNDI_NAME);
>                       AesUserLocal tmp = home.create();
>                       tmp.test2();    
> 
>               } catch (NamingException e) {
>                       e.printStackTrace();
>               } catch (CreateException e) {
>                       e.printStackTrace();
>               } catch (SQLException e) {
>                       e.printStackTrace();
>               }
>               finally {
>                       try {
>                               if (conn != null) {
>                                       System.out.println("CLOSE CONNECTION
> 1");
>                                       conn.close();
>                               }
>                       } catch (SQLException e1) {
>                               e1.printStackTrace();
>                       }
>               }
>       }
> 
>       /**
>        * @ejb.interface-method 
>        * @ejb.permission  role-name="admin,user"
>       **/
>       public void test2() {
>               Connection conn = null;
>               try {
> 
>                       InitialContext ctx = new InitialContext();
>                       DataSource ds =
> (DataSource)ctx.lookup("java:comp/env/jdbc/AESDS_MAXDB_SALUSA_AES");
>                       conn = ds.getConnection();
> 
>                       ResultSet rs =
> conn.createStatement().executeQuery("SELECT COUNT(*) FROM AES_USER");
>                       rs.first();
>                       System.out.println("TEST2: " + rs.getInt(1));
>                       
>               } catch (NamingException e) {
>                       e.printStackTrace();
>               } catch (SQLException e) {
>                       e.printStackTrace();
>               }
>               finally {
>                       try {
>                               if (conn != null) {
>                                       System.out.println("CLOSE CONNECTION
> 2");
>                                       conn.close();
>                               }
>                       } catch (SQLException e1) {
>                               e1.printStackTrace();
>                       }
>               }
>       }
> 
> 
> 
> 
> -----Original Message-----
> From: Armin Waibel [mailto:[EMAIL PROTECTED]
> Sent: Freitag, 2. Juli 2004 15:03
> To: OJB Users List
> Subject: Re: JBoss have to close connection in managed environment and
> nes ted EJB calls
> 
> 
> doh! Sorry I don't read your first post till end.
> Seems we don't have a test case for your scenario. There is a session 
> bean using two beans in another bean (PersonArticleManagerPBBean), but 
> they never made nested PB calls.
> It is not allowed to use nested PB instances in OJB standalone mode, so 
> I'm not sure about handling in managed environments. Is it possible to 
> use nested connections in beans? E.g. instead create a PB instance, use 
> a JNDI connection, do some work, obtain another bean, call bean method, 
> close obtained JNDI connection. Is this allowed?
> 
> regards,
> Armin
> 
> 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]
> 
> ---------------------------------------------------------------------
> 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