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 Peter Juszack <pj...@systemconcept.de> on 2005/02/16 11:06:14 UTC

Borrow broker from pool failed

Hi list,

    we use OJB 1.0-rc5 together with JBoss 3.2.1 and EJB in a production environment. The system is up for about one and a half years.
The problem is, that we have to restart the JBoss application server once a week. This is necessary because new ServerContexts (Logins) can't get a persistence broker from the pool (stack tarce follows).

I already browsed the list archive and checked our code. I considered that we close all broker instances. Unfortunately we cannot reproduce the problem in our develepoment system but our customer is complaining about the problem. I tried to force it by storing tons of objects and running loops of login and logout - without success.

By now we restart the application server once a week per cron-job. Since the Exception was reported after 5 days last week our customer got very angry and we now want to fix it.

Does anyone know what the reason can be?
How to reproduce it (what causes the problem)?
Solutions?

Thanks

------------------------------------------------------
Peter Juszack


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Our system (production)

Server: Redhat Linux, JBoss-3.2.1, OJB 1.0-rc5, ORACLE 9i


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Our OJB.properties (comments removed)

# OJB.properties -- configuration of the OJB runtime environment
# Version: 1.0
# (c) 2001, 2002, 2003 Apache Software Foundation
# Author: Thomas Mahler and many others
#
repositoryFile=repository.xml
useSerializedRepository=false
serializedRepositoryPath=.
PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl
maxActive=100
maxIdle=-1
maxWait=2000
timeBetweenEvictionRunsMillis=-1
minEvictableIdleTimeMillis=1000000
whenExhaustedAction=0
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl
ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerImpl
SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl
StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager
StatementsForClassClass=org.apache.ojb.broker.accesslayer.StatementsForClassImpl
JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl
ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl
LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl
LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl
LockTimeout=60000
ImplicitLocking=true
LockAssociations=WRITE
LoggerClass=org.apache.ojb.broker.util.logging.PoorMansLoggerImpl
LoggerConfigFile=log4j.properties
ROOT.LogLevel=ERROR
DEFAULT.LogLevel=WARN
org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=WARN
org.apache.ojb.broker.PersistenceBrokerFactory.LogLevel=WARN
org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=WARN
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.LogLevel=WARN
org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=WARN
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.LogLevel=WARN
org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG
org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=WARN
org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=WARN
org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=ERROR
ODMG.LogLevel=WARN
JDO.LogLevel=DEBUG
performance.LogLevel=INFO
soda.LogLevel=WARN
ConfigurableFactory.LogLevel=WARN
OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl
SqlInLimit=200
PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl
OJBTxManagerClass=org.apache.ojb.odmg.JTATxManager
JTATransactionManagerClass=org.apache.ojb.odmg.transaction.JBossTransactionManagerFactory


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JBoss reports the following stacktrace:

07:55:55,288 ERROR [LogInterceptor] RuntimeException:
java.util.NoSuchElementException
        at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:758)
        at org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPersistenceBroker(PersistenceB
rokerFactoryDefaultImpl.java:138)
        at org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.defaultPersistenceBroker(PersistenceBro
kerFactoryBaseImpl.java:197)
        at de.hkw.lekos.server.core.AbstractSessionBean.getBroker(AbstractSessionBean.java:104)
        at de.hkw.lekos.server.core.AbstractMaintenanceBean.storeObject(AbstractMaintenanceBean.java:292)
        at de.hkw.lekos.server.core.AbstractMaintenanceBean.log(AbstractMaintenanceBean.java:97)
        at de.hkw.lekos.server.ejb.sb.benutzer.BenutzerMaintenanceBean.login(BenutzerMaintenanceBean.java:114)
        at sun.reflect.GeneratedMethodAccessor560.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:
629)
        at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor
.java:186)
        at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceIntercepto
r.java:72)
        at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
        at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:322)
        at org.jboss.ejb.Container.invoke(Container.java:674)
        at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:359)
        at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
        at sun.rmi.transport.Transport$1.run(Transport.java:148)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at java.lang.Thread.run(Thread.java:534)
rethrown as
org.apache.ojb.broker.PBFactoryException: Borrow broker from pool failed, using PBKey org.apache.ojb.broker.PB
Key: jcdAlias=default, user=lekos, password=*****
        at org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPersistenceBroker(PersistenceB
rokerFactoryDefaultImpl.java:156)
        at org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.defaultPersistenceBroker(PersistenceBro
kerFactoryBaseImpl.java:197)
        at de.hkw.lekos.server.core.AbstractSessionBean.getBroker(AbstractSessionBean.java:104)
        at de.hkw.lekos.server.core.AbstractMaintenanceBean.storeObject(AbstractMaintenanceBean.java:292)
        at de.hkw.lekos.server.core.AbstractMaintenanceBean.log(AbstractMaintenanceBean.java:97)
        at de.hkw.lekos.server.ejb.sb.benutzer.BenutzerMaintenanceBean.login(BenutzerMaintenanceBean.java:114)
        at sun.reflect.GeneratedMethodAccessor560.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:
629)
        at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor
.java:186)
        at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceIntercepto
r.java:72)
        at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
        at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:322)
        at org.jboss.ejb.Container.invoke(Container.java:674)
        at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
        at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:359)
        at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
        at sun.rmi.transport.Transport$1.run(Transport.java:148)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at java.lang.Thread.run(Thread.java:534)
Caused by: java.util.NoSuchElementException
        at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:758)
        at org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.createPersistenceBroker(PersistenceB
rokerFactoryDefaultImpl.java:138)
        ... 35 more


Re: Borrow broker from pool failed

Posted by Thomas Franke <fr...@softenergy.de>.
Hallo Peter,

> vielen Dank für Deine Hinweise. Wir versuchen hier gerade auf OJB 1.0.1 zu
> updaten. Dem ojb JAR aus dem Binarypaket fehlen allerding die
> org.apapche.ojb.jboss.* - Klassen, die für den JNDI-Kram erforderlich sind.
> Ist Selbstkompillieren des OJB die einzige Möglichkeit oder bekommt man noch
> irgendwo ein fertiges JAR, in dem alle Klassen enthalten sind?
Dazu kann ich gar nichts sagen, weil das bisher in unserem Projekt nicht 
anwenden. Tut mir leid.
Kann man nicht die fehlenden Klassen auch als extra jar mitgeben?


-- 
Mit freundlichen Grüßen

Thomas Franke

Geschäftsführer
Leiter Entwicklung
----------------------------
the energy for a better world
----------------------------
softEnergy GmbH
Platz der Freundschaft 1
18059 Rostock
----------------------------
fon: +49 381 40 587 535
fax: +49 381 40 587 555
mobil: +49 1715222015

http://www.softenergy.de
mail: info@softenergy.de
----------------------------

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


Re: Borrow broker from pool failed

Posted by Armin Waibel <ar...@apache.org>.
Peter Juszack wrote:
> Hallo Thomas,
> 
> vielen Dank für Deine Hinweise. Wir versuchen hier gerade auf OJB 1.0.1 zu
> updaten. Dem ojb JAR aus dem Binarypaket fehlen allerding die
> org.apapche.ojb.jboss.* - Klassen, die für den JNDI-Kram erforderlich sind.

richtig, die Klassen wurden entfernt, da sie eigentlich nichts mit OJB 
zu tun haben und es für uns nicht möglich ist für jeden appServer eine 
solche service Klasse vorzuhalten.
Sollte allerdings kein Problem sein die "alten" JBoss Klassen in OJB 
1.0.1 zu integrieren.


> Ist Selbstkompillieren des OJB die einzige Möglichkeit oder bekommt man noch
> irgendwo ein fertiges JAR, in dem alle Klassen enthalten sind?

Die Klassen taten nichts anderes als die PBF (oder odmg interfaces) 
über JNDI zur Verfügung zu stellen. Dazu muß OJB nicht selbst kompiliert 
werden, es reicht eine solche service Klasse zu schreiben.

Gruß Armin


> 
> Gruß Peter
> 
> ----- Original Message ----- 
> From: "Thomas Franke" <fr...@softenergy.de>
> To: "OJB Users List" <oj...@db.apache.org>
> Sent: Wednesday, February 16, 2005 12:21 PM
> Subject: Re: Borrow broker from pool failed
> 
> 
> 
>>Peter Juszack wrote:
>>
>>
>>>we use OJB 1.0-rc5 together with JBoss 3.2.1 and EJB in a production
>>>environment. The system is up for about one and a half years. The
>>>problem is, that we have to restart the JBoss application server once
>>>a week. This is necessary because new ServerContexts (Logins) can't
>>>get a persistence broker from the pool (stack tarce follows).
>>
>>I know that problem. We had the same a time ago. I think there are 2
>>solutions: First you must close each broker with broker.close. Check
>>your code for this. Second it seems this is a bug in your ojb version.
>>Since we changed to ojb 1.0.1 we haven't had this problem anymore.
>>The change from 1.0-rc5 to 1.0.1 was really easy and without any trouble.
>>
>>good luck
>>
>>regards
>>
>>Thomas
>>
>>-- 
>>Mit freundlichen Grüßen
>>
>>Thomas Franke
>>
>>Geschäftsführer
>>Leiter Entwicklung
>>----------------------------
>>the energy for a better world
>>----------------------------
>>softEnergy GmbH
>>Platz der Freundschaft 1
>>18059 Rostock
>>----------------------------
>>fon: +49 381 40 587 535
>>fax: +49 381 40 587 555
>>mobil: +49 1715222015
>>
>>http://www.softenergy.de
>>mail: info@softenergy.de
>>----------------------------
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>>For additional commands, e-mail: ojb-user-help@db.apache.org
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 
> 

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


Re: Borrow broker from pool failed

Posted by Peter Juszack <pj...@systemconcept.de>.
Hallo Thomas,

vielen Dank für Deine Hinweise. Wir versuchen hier gerade auf OJB 1.0.1 zu
updaten. Dem ojb JAR aus dem Binarypaket fehlen allerding die
org.apapche.ojb.jboss.* - Klassen, die für den JNDI-Kram erforderlich sind.
Ist Selbstkompillieren des OJB die einzige Möglichkeit oder bekommt man noch
irgendwo ein fertiges JAR, in dem alle Klassen enthalten sind?

Gruß Peter

----- Original Message ----- 
From: "Thomas Franke" <fr...@softenergy.de>
To: "OJB Users List" <oj...@db.apache.org>
Sent: Wednesday, February 16, 2005 12:21 PM
Subject: Re: Borrow broker from pool failed


> Peter Juszack wrote:
>
> > we use OJB 1.0-rc5 together with JBoss 3.2.1 and EJB in a production
> > environment. The system is up for about one and a half years. The
> > problem is, that we have to restart the JBoss application server once
> > a week. This is necessary because new ServerContexts (Logins) can't
> > get a persistence broker from the pool (stack tarce follows).
> I know that problem. We had the same a time ago. I think there are 2
> solutions: First you must close each broker with broker.close. Check
> your code for this. Second it seems this is a bug in your ojb version.
> Since we changed to ojb 1.0.1 we haven't had this problem anymore.
> The change from 1.0-rc5 to 1.0.1 was really easy and without any trouble.
>
> good luck
>
> regards
>
> Thomas
>
> -- 
> Mit freundlichen Grüßen
>
> Thomas Franke
>
> Geschäftsführer
> Leiter Entwicklung
> ----------------------------
> the energy for a better world
> ----------------------------
> softEnergy GmbH
> Platz der Freundschaft 1
> 18059 Rostock
> ----------------------------
> fon: +49 381 40 587 535
> fax: +49 381 40 587 555
> mobil: +49 1715222015
>
> http://www.softenergy.de
> mail: info@softenergy.de
> ----------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>


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


Re: Borrow broker from pool failed

Posted by Thomas Franke <fr...@softenergy.de>.
Peter Juszack wrote:

> we use OJB 1.0-rc5 together with JBoss 3.2.1 and EJB in a production
> environment. The system is up for about one and a half years. The
> problem is, that we have to restart the JBoss application server once
> a week. This is necessary because new ServerContexts (Logins) can't
> get a persistence broker from the pool (stack tarce follows).
I know that problem. We had the same a time ago. I think there are 2 
solutions: First you must close each broker with broker.close. Check 
your code for this. Second it seems this is a bug in your ojb version. 
Since we changed to ojb 1.0.1 we haven't had this problem anymore.
The change from 1.0-rc5 to 1.0.1 was really easy and without any trouble.

good luck

regards

Thomas

-- 
Mit freundlichen Grüßen

Thomas Franke

Geschäftsführer
Leiter Entwicklung
----------------------------
the energy for a better world
----------------------------
softEnergy GmbH
Platz der Freundschaft 1
18059 Rostock
----------------------------
fon: +49 381 40 587 535
fax: +49 381 40 587 555
mobil: +49 1715222015

http://www.softenergy.de
mail: info@softenergy.de
----------------------------

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