Alexander Hartner [
http://community.jboss.org/people/ejb3workshop] created the discussion
"Adjust / reduce MDB bean pool"
To view the discussion, visit:
http://community.jboss.org/message/568627#568627
--------------------------------------------------------------
I am trying to reduce the MDB bean pool to limit the concurrency of my application. I know
I can do this via the ActivationSpecification as well as via the deployment descriptor.
However I would like to do this outside the EAR file and be able to adjust it at the
application server level. I have found the suggestion to edit maxSize=5 in
ejb3-interceptors-aop.xml.
<bind pointcut="execution(public *
@javax.annotation.security.RunAs->*(..))">
<interceptor-ref
name="org.jboss.ejb3.security.RunAsSecurityInterceptorFactory"/>
</bind>
<bind pointcut="execution(public * *->*(..))">
<interceptor-ref
name="org.jboss.ejb3.stateless.StatelessInstanceInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.tx.TxInterceptorFactory"/>
<interceptor-ref
name="org.jboss.ejb3.AllowedOperationsInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.interceptor.EJB3InterceptorsFactory"/>
</bind>
<annotation expr="!class((a)org.jboss.annotation.ejb.PoolClass)">
@org.jboss.annotation.ejb.PoolClass (value=org.jboss.ejb3.StrictMaxPool.class,
maxSize=5, timeout=10000)
</annotation>
</domain>
<domain name="Message Driven Bean">
<bind pointcut="execution(public *
@javax.annotation.security.RunAs->*(..))">
<interceptor-ref
name="org.jboss.ejb3.security.RunAsSecurityInterceptorFactory"/>
</bind>
<bind pointcut="execution(public * *->*(..))">
<interceptor-ref
name="org.jboss.ejb3.stateless.StatelessInstanceInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.tx.TxInterceptorFactory"/>
<interceptor-ref
name="org.jboss.ejb3.AllowedOperationsInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor"/>
<interceptor-ref
name="org.jboss.ejb3.interceptor.EJB3InterceptorsFactory"/>
</bind>
<annotation expr="!class((a)org.jboss.annotation.ejb.PoolClass)">
@org.jboss.annotation.ejb.PoolClass (value=org.jboss.ejb3.StrictMaxPool.class,
maxSize=5, timeout=10000)
</annotation>
</domain>
Yet this resulted the following exception:
javax.ejb.EJBException: Failed to acquire the pool semaphore,
strictTimeout=10000
at org.jboss.ejb3.StrictMaxPool.get(StrictMaxPool.java:122)
at
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54)
at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:249)
at
org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268)
at
org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138)
at $Proxy158.onMessage(Unknown Source)
at
org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
at
org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)
at
org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)
at
org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect14.invoke(SessionAspect14.java)
at
org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
at
org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
at
org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
at
org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
at
org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
at
org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:237)
at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
at java.lang.Thread.run(Thread.java:619)
Further reading brought me on to this link :
http://community.jboss.org/docs/DOC-9334
http://community.jboss.org/wiki/ConfigJBossMDB as well as other forum posts which suggests
adding *<strictTimeout>forever</strictTimeout>* to conf/standardjboss.xml as
in:
<container-configuration>
<container-name>Standard Message Driven Bean</container-name>
<call-logging>false</call-logging>
<invoker-proxy-binding-name>message-driven-bean</invoker-proxy-binding-name>
<container-interceptors>
<interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.RunAsSecurityInterceptor</interceptor>
<!-- CMT -->
<interceptor
transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor>
<interceptor
transaction="Container">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor>
<interceptor
transaction="Container">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
<!-- BMT -->
<interceptor
transaction="Bean">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
<interceptor
transaction="Bean">org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT</interceptor>
<interceptor
transaction="Bean">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor>
<interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor>
</container-interceptors>
<instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool>
<instance-cache></instance-cache>
<persistence-manager></persistence-manager>
<container-pool-conf>
<MaximumSize>100</MaximumSize>
<strictTimeout>forever</strictTimeout>
</container-pool-conf>
</container-configuration>
Any suggestion on how I to change the pool size used for MDBs using JBoss 4.2.3
correctly.
Kind regards
Alex
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/568627#568627]
Start a new discussion in EJB 3.0 at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]