Question

Nous avons une situation étrange où nous perdons un Stateless SessionBean dans un pool de Beans dans Weblogic 10.3.0. Puisque nous avons seulement un haricot dans la piscine, ce bloque efficacement tous les appels entrants. Nous ne voulons pas plus d'une instance dans la piscine en raison des restrictions d'application.

Dans la console d'administration Weblogic, nous pouvons voir qu'il ya 1 instance dans la piscine de haricots, les haricots 0 utilisés, et 1 en attente demande entrante. La question est, pourquoi ne pas le système envoie la demande à une instance de haricot évidemment libre?

Cela se produit après plusieurs heures et plus de 100.000 demandes entrantes, et le même scénario a bien fonctionné dans l'ancien environnement weblogic 8.

Nous obtenons la trace de la pile suivante:

   "[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)

Toute aide serait la bienvenue.

Était-ce utile?

La solution

Ceci est un problème connu dans Oracle et ils ont un patch pour cette question. Contactez le support Oracle pour obtenir le patch.

Autres conseils

Plus d'une solution de contournement qu'une réponse directe, mais si cela a fonctionné avec WebLogic 8, peut-être essayer de passer à 8.1 exécutent le style des files d'attente et voir si ça aide. Dans tous les cas, vous devez ouvrir un cas en effet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top