2010-02-17 121 views
1

我们遇到了一个奇怪的情况,我们在Weblogic 10.3.0中的Bean池中失去了一个无状态SessionBean。由于我们在池中只有一个bean,因此这会有效地挂起所有来电。由于应用程序的限制,我们不希望池中有多个实例。Weblogic 10.3.0:丢失bean池中的无状态会话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.u[email protected]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) 

任何帮助将是非常欢迎的。

+0

您可以尝试Oracle对此的支持。这听起来像是在weblogic线程处理器中的一个错误。可能是某种内存泄漏。 – NotMe 2010-02-17 14:12:09

+0

谢谢你的建议克里斯,我们很可能会这样做,只是想听听其他人是否遇到过这个问题,并且知道它会是什么。 – KlasE 2010-02-17 14:19:24

回答

0

这是Oracle中的一个已知问题,他们为此问题提供了补丁。联系Oracle支持人员获取补丁。

+0

谢谢Arun注意。我们的项目与Oracle合作确定并创建了该补丁。因此,对于任何有类似问题的人来说,这是很好的知道,去获得该补丁。 – KlasE 2010-05-16 09:00:15

0

更直接的答案,但如果这与WebLogic 8一起工作,也许尝试切换到8.1 style execute queues,看看它是否有帮助。无论如何,你应该确实打开一个案例。

+0

感谢您的建议和链接。我们现在已经与Oracle开了一个案子。 Weblogic 10.3.1中也有一些可能相关的缺陷,这可能会迫使我们升级。当希望解决时,我会在这里公布帮助案例的结果。 – KlasE 2010-02-18 10:05:07

+0

@KlasE感谢您的反馈 – 2010-02-18 10:15:19