Weblogic 10.3.0:丢失bean池中的无状态会话bean

时间:2010-02-17 13:55:05

标签: java-ee weblogic-10.x stateless-session-bean

我们遇到一种奇怪的情况,我们在Weblogic 10.3.0中的Bean池中丢失了无状态SessionBean。由于我们在池中只有一个bean,因此可以有效地挂起所有来电。由于应用程序的限制,我们不希望池中有多个实例。

在Weblogic管理控制台中,我们可以看到bean池中有1个实例,正在使用0个bean,还有1个等待传入请求。问题是,为什么系统不将请求发送给明显免费的bean实例?

这种情况发生在几个小时之后,超过100,000个传入请求,并且相同的方案在旧的weblogic 8环境中正常工作。

我们得到以下堆栈跟踪:

   "[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@b0d484 TIMED_WAITING

            sun.misc.Unsafe.park(Native Method)

            java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)

            java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2054)

            weblogic.ejb.container.pool.StatelessSessionPool.waitForBean(StatelessSessionPool.java:269)

            weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:111)

            weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:148)

            weblogic.ejb.container.internal.BaseRemoteObject.preInvoke(BaseRemoteObject.java:227)

            weblogic.ejb.container.internal.StatelessRemoteObject.preInvoke(StatelessRemoteObject.java:52)

            com.mycompany.beans.MessageLogFacace_n73y0z_EOImpl.isMyStuffValid(MessageLogFacace_n73y0z_EOImpl.java:261)

            com.mycompany.beans.MessageLogFacace_n73y0z_EOImpl_WLSkel.invoke(Unknown Source)

            weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)

            weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)

            weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)

            weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)

            weblogic.security.service.SecurityManager.runAs(Unknown Source)

            weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)

            weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)

            weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

            weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

非常欢迎任何帮助。

2 个答案:

答案 0 :(得分:0)

更多的解决方法而非直接答案,但如果这适用于WebLogic 8,可能会尝试切换到8.1 style execute queues并查看它是否有帮助。无论如何,你应该确实打开一个案例。

答案 1 :(得分:0)

这是Oracle中的一个已知问题,他们有针对此问题的补丁。联系Oracle支持以获取补丁。