如何为MDB用户配置maxSession值?
有一个MDB侦听来自特定队列的消息。它被定义为注释。
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "5")
。
为了更改maxSession的值,必须每次都编译代码。
有没有办法让用户可以配置,这样就不需要构建而不重新启动jboss?
请帮助。
答案 0 :(得分:4)
这是从耳朵外部化此设置的方法:
https://community.jboss.org/thread/178162
但仍然需要重启。
<强>更新强>
找到a way以在ejb-jar.xml
中应用具有系统属性引用的新maxSession:
<activation-config-property>
<activation-config-property-name>maxSession</activation-config-property-name>
<activation-config-property-value>${my.mdb.maxSession:30}</activation-config-property-value>
</activation-config-property>
不需要完整的JBoss重启,在这种情况下只需要重新部署耳机。
适用于所有JBoss版本until JBoss AS 7。
请注意,maxSession必须与最大池大小同步: https://community.jboss.org/message/549083#549083
答案 1 :(得分:0)
另请注意,可以在AOP配置文件中指定会话数和实例池大小:
<?xml version="1.0" encoding="UTF-8"?>
<aop xmlns="urn:jboss:aop-beans:1.0">
<domain name="IBMMQ Message Driven Bean" extends="Message Driven Bean" inheritBindings="true">
<annotation expr="class(*)">
@org.jboss.ejb3.annotation.Pool (value="StrictMaxPool", maxSize=10, timeout=10000)
</annotation>
<annotation expr="!class(@org.jboss.ejb3.annotation.DefaultActivationSpecs)">
@org.jboss.ejb3.annotation.DefaultActivationSpecs (value={@javax.ejb.ActivationConfigProperty(propertyName = "channel", propertyValue = "SSL.CLIENTS"), @javax.ejb.ActivationConfigProperty(propertyName = "queueManager", propertyValue = "SSLQM"), @javax.ejb.ActivationConfigProperty(propertyName = "hostName", propertyValue = "10.0.0.124"), @javax.ejb.ActivationConfigProperty(propertyName = "port", propertyValue = "1415"), @javax.ejb.ActivationConfigProperty(propertyName = "transportType", propertyValue = "CLIENT"), @javax.ejb.ActivationConfigProperty(propertyName = "sslCipherSuite", propertyValue = "SSL_RSA_WITH_3DES_EDE_CBC_SHA")})
</annotation>
</domain>
</aop>
然后添加注释:
@AspectDomain("IBMMQ Message Driven Bean")
到您的MDB。这可用于外部化视图数和实例池大小。
答案 2 :(得分:0)
根据此how many Message Driven Beans are created in Jboss? maxSession不能超过StrictMaxPool的设置。因此,在调整maxSession时 - 此设置也需要更改!