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