2010-02-17 128 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