2013-07-31 1 views
2

У нас есть приложение, работающее на Jboss AS 7.1.1 и использует EJB 3. Мы периодически видим ошибки при слеженииJboss AS 7.1.1 EJB 3: ошибка пула EJB

javax.ejb.EJBException: JBAS014516 : Сбой , чтобы получить разрешение в течение 5 минут по адресу org.jboss.as.ejb3.pool.strictmax.StrictMaxPool.get (StrictMaxPool.java:109) at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor. processInvocation (PooledInstanceInterceptor.java:47) at org.jboss.invocation.InterceptorContext.proceed (InterceptorContext.java:288) at 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) at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation (NamespaceContextInterceptor.java:50) at 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) на org.jboss.as.ee.component.ViewService $ View.invoke (ViewService.java:165) на 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)

Ниже конфигурации подсистемы EJB в 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> 

Мы пытаемся устранить то, что может быть причиной этой проблемы и исправления для него.

+0

Есть ли у вас какие-либо исключения до этого?В предыдущей версии JBoss существовала проблема утечки лизинга (https://issues.jboss.org/browse/JBAS-1599). Означает ли это, что это может быть так и для вас? – eis

+0

Вы могли найти основную причину этого? –

ответ

6

Это происходит, когда сконфигурированный пул EJB исчерпан - означает, что все EJB в настоящее время «используются» (= обработка). Ищите длинные вызовы в ваших EJB. Кажется, что призывы занимают больше 5 минут в вашем случае.