2013-07-31 84 views
2

我们在JBoss上运行的应用程序AS 7.1.1并使用EJB 3,我们看到间歇以下错误作为JBoss 7.1.1 EJB 3:EJB池错误

javax.ejb.EJBException异常:JBAS014516 :失败 要在org.jboss.as.ejb3.pool.strictmax.StrictMaxPool.get(StrictMaxPool.java:109) org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor中的5分钟内获取许可证 。 processInvocation(PooledInstanceInterceptor.java:47) 在org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 在org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingIn terceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:8 0) 在org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 在org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor。的java :41) 在org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 在org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) 在有机.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) 在org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) 在org.jboss .Invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:32) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext .java:288) at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss .invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) at org.jboss.as.ee.component.ViewService $ View.invoke(ViewService.java:165) at org.jboss.as.ejb3.remote.LocalEjbReceiver .processInvocation(LocalEjbReceiver.java:179) at org.jboss.ejb.client.EJBClient InvocationContext.sendRequest(EJBClientInvocationContext.java:179) 在org.jboss.ejb.client.TransactionInterceptor.handleInvocation(TransactionInterceptor.java:43) 在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) 在org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:128) 在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) 在org.jboss.ejb.client。 EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136) 在org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121) 在org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)

下面是在standalone.xml

<subsystem xmlns="urn:jboss:domain:ejb3:1.2"> 
     <session-bean> 
      <stateless> 
       <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> 
      </stateless> 
      <stateful default-access-timeout="5000" cache-ref="simple"/> 
      <singleton default-access-timeout="5000"/> 
     </session-bean> 
     <mdb> 
      <resource-adapter-ref resource-adapter-name="hornetq-ra"/> 
      <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> 
     </mdb> 
     <pools> 
      <bean-instance-pools> 
       <strict-max-pool name="slsb-strict-max-pool" max-pool-size="40" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> 
       <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> 
      </bean-instance-pools> 
     </pools> 
     <caches> 
      <cache name="simple" aliases="NoPassivationCache"/> 
      <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/> 
     </caches> 
     <passivation-stores> 
      <file-passivation-store name="file"/> 
     </passivation-stores> 
     <async thread-pool-name="default"/> 
     <timer-service thread-pool-name="default"> 
      <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/> 
     </timer-service> 
     <remote connector-ref="remoting-connector" thread-pool-name="default"/> 
     <thread-pools> 
      <thread-pool name="default"> 
       <max-threads count="10"/> 
       <keepalive-time time="100" unit="milliseconds"/> 
      </thread-pool> 
     </thread-pools> 
    </subsystem> 
    <subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="hibernate"> 
     <cache-container name="hibernate" default-cache="local-query"> 
      <local-cache name="entity"> 
       <transaction mode="NON_XA"/> 
       <eviction strategy="LRU" max-entries="10000"/> 
       <expiration max-idle="100000"/> 
      </local-cache> 
      <local-cache name="local-query"> 
       <transaction mode="NONE"/> 
       <eviction strategy="LRU" max-entries="10000"/> 
       <expiration max-idle="100000"/> 
      </local-cache> 
      <local-cache name="timestamps"> 
       <transaction mode="NONE"/> 
       <eviction strategy="NONE"/> 
      </local-cache> 
     </cache-container> 
    </subsystem> 

我们正在试图解决什么可能会造成这个问题和它的修复为EJB子系统的配置。

+0

在此之前您是否有过任何异常?在以前的JBoss版本中,有一个[泄漏泄漏问题](https://issues.jboss.org/browse/JBAS-1599)。这听起来可能是你的情况吗? – eis

+0

你能找到这个根源吗? –

回答

6

出现这种情况,当配置的EJB池耗尽 - 意味着所有EJB是当前“使用中”(=处理)。在EJB中查找长时间运行的调用。在你的情况下,调用时间似乎超过5分钟。