Re: cannot get element in pool
"Hans J. Prueller" <[email protected]> Thu, 17 Feb 2011 07:54:41 +0100
| Newsgroups | gmane.comp.java.objectweb.jonas |
|---|---|
| Organization | LBS logics GmbH |
| Message-ID | <1297925681.2133.6.camel@kodos> |
hi all, obviously the source exception is: Caused by: org.ow2.util.pool.impl.enhanced.api.TimeoutPoolException but there is only 1 user on my testmachine (myself) doing single clicks -- there is absolutely no load on the system. What else could cause this TimeoutPoolException ? - e.g. if a business method of an SLSB takes too long? - or probably this error occurs slightly before an outofmemory error or similar? Would that timeout be configurable somewhere? regards, Hans Am Mittwoch, den 16.02.2011, 21:47 +0100 schrieb Hans J. Prueller: > hi all, > > we have successfully migrated our existing java 2 ee 1.4 based EAR to > Java ee 5 and JOnAS 5.2 (pre-m4). > > I can deploy the EAR without errors and login to the contained webapp > and do some clicks. After some time > > the following error occurs: > > javax.ejb.EJBException: java.lang.IllegalArgumentException: Cannot get > element in the pool > at > org.ow2.easybeans.proxy.client.AbsInvocationHandler.handleThrowable(AbsInvocationHandler.java:176) > at > org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:218) > at > org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:111) > at $Proxy112.checkSpammingDevices(Unknown Source) > at > com.lbslogics.ims.servlet.job.JobCheckSpammingDevice.execute(JobCheckSpammingDevice.java:41) > at org.quartz.core.JobRunShell.run(JobRunShell.java:191) > at org.quartz.simpl.SimpleThreadPool > $WorkerThread.run(SimpleThreadPool.java:516) > Caused by: java.lang.IllegalArgumentException: Cannot get element in > the pool > at > org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:107) > at > org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.localCall(StatelessSessionFactory.java:124) > at > org.ow2.easybeans.container.session.SessionFactory.rpcInvoke(SessionFactory.java:233) > at > org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl.getEJBResponse(RMIServerRPCImpl.java:106) > at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) > at > org.ow2.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnicastServerRef.java:167) > at sun.rmi.transport.Transport$1.run(Transport.java:159) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:155) > at > sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) > at sun.rmi.transport.tcp.TCPTransport > $ConnectionHandler.run0(TCPTransport.java:790) > at sun.rmi.transport.tcp.TCPTransport > $ConnectionHandler.run(TCPTransport.java:649) > at java.util.concurrent.ThreadPoolExecutor > $Worker.runTask(ThreadPoolExecutor.java:886) > at java.util.concurrent.ThreadPoolExecutor > $Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.ow2.util.pool.api.PoolException: No more instances > available > at > org.ow2.util.pool.impl.enhanced.EnhancedPool.get(EnhancedPool.java:201) > at > org.ow2.easybeans.container.session.PoolWrapper.get(PoolWrapper.java:71) > at > org.ow2.easybeans.container.session.PoolWrapper.get(PoolWrapper.java:40) > at > org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:105) > ... 17 more > Caused by: org.ow2.util.pool.impl.enhanced.api.TimeoutPoolException > at > org.ow2.util.pool.impl.enhanced.impl.keepbusy.KeepBusyPool.get(KeepBusyPool.java:229) > at > org.ow2.util.pool.impl.enhanced.impl.limited.LimitedWaiterPool.get(LimitedWaiterPool.java:70) > at > org.ow2.util.pool.impl.enhanced.EnhancedPool.get(EnhancedPool.java:197) > ... 20 more > > > > Can you give me a hint what this means? I am working on my development > workstation, freshly deployed the EAR and have tested > the webapp with a single user, doing single click after click -- so > how could I reach "no more instances available" from the pool > with a single user? > > > I guess I found the SLSB that makes these problems and looked at > deployment info in jonasAdmin which says: > > Monitoring > numberOfCalls > > 0 > > totalBusinessProcessingTime > > 0 > > averageBusinessProcessingTime > > 0 > > poolItemsBusy > > 0 > > poolItemsAvailable > > 0 > > poolMin > > 0 > > poolMax > > -1 > > poolSpare > > 15 > > poolMaxWaiters > > 1000 > > so - poolItemsAvailable is really zero - for the other EJB's this is > in most cases 15. > > Any idea what the problem could be? > > regards, > hans >