在我们的项目中,我们正在使用侦听特定队列上的消息的MDB。它被定义为注释。
示例:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20")})
。
为了更改maxSessions的值,必须每次都编译代码。即使我在ejb-jar.xml中配置它而不是作为注释,我需要编译代码并生成EAR文件。
是否有办法使用户可配置(从属性文件中读取),这样就不需要重新编译代码,只需将maxSession值更改为" 30"并重新启动jboss,它应该工作。
请帮助。
参考代码:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "ABCQueue"),
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20"), @ActivationConfigProperty(propertyName="maxMessagesPerSessions",propertyValue="15")})
public class ABCMDB implements MessageListener
{
-----------
}
答案 0 :(得分:1)
我开始写一篇关于Wildfly8和Websphere MQ集成的要点,允许为MDB或JMS消息生产者配置和维护环境上下文配置。
基本上,我必须在我的应用程序中声明一个jboss-ejb3.xml自定义部署描述符,它使用系统属性进行MDB使用的上下文配置。
系统属性在wildfly standalone-full.xml文件中的system-properties元素下配置。所以不是在属性文件中,而是在我的视图中,standalone-full.xml配置是这种配置的好位置。
以下是链接:https://gist.github.com/remibantos/33c366803f189db9b225
答案 1 :(得分:1)
Wildfly中有一个简单的方法(我已经在Wildfly 11中使用了它。)
<subsystem xmlns="urn:jboss:domain:ee:4.0">
...
<annotation-property-replacement>true</annotation-property-replacement>
...
</subsystem>
在standalon-xx.xml或domain.xml中定义系统属性
<system-properties>
<property name="property.maxsessions" value="50"/>
</system-properties>
或者在启动wildfly时使用-P myconfigured.properties
使用自己的属性文件
或者在启动Wildfly -Dproperty=value
时通过命令行
修改MDB注释
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue =
"${property.maxsessions}")