使JBoss EAP 5.1中的特定MDB可配置maxSession属性

如何为MDB用户配置maxSession值?

有一个MDB可以侦听来自特定队列的消息。 它被定义为注释。

@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "5")

为了更改maxSession的值,必须每次都编译代码。

有没有办法让用户可配置,以便不需要构建,也无需重新启动jboss?

请帮助。

这是从耳朵外部化此设置的方法:

https://community.jboss.org/thread/178162

但仍需要重启。

更新

找到了一种在ejb-jar.xml应用带有系统属性引用的新maxSession 的方法 :

  maxSession ${my.mdb.maxSession:30}  

不需要完整的JBoss重启,在这种情况下只需要重新部署耳朵。

它适用于所有JBoss版本, 直到 JBoss AS 7。

请注意,maxSession必须与最大池大小同步: https ://community.jboss.org/message/549083#549083

另请注意,可以在AOP配置文件中指定会话数和实例池大小:

     @org.jboss.ejb3.annotation.Pool (value="StrictMaxPool", maxSize=10, timeout=10000)   @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")})    

然后添加注释:

 @AspectDomain("IBMMQ Message Driven Bean") 

到您的MDB。 这可以用于外部化视图的数量和实例池大小。

根据这个在Jboss中创建了多少消息驱动的Bean? maxSession不能超过StrictMaxPool的设置。 所以在调整maxSession时 – 这个设置也需要改变!