在Jboss 7.1.1中外部化MDB配置

时间:2013-05-30 03:42:30

标签: java ejb-3.0 jboss7.x message-driven-bean

我使用Jboss作为7.1.1,我有我的EJB MDB注释,如下所示:

@MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "XXX.IN"),
    @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"),
    @ActivationConfigProperty(propertyName = "hostName", propertyValue = "XXX.com"),
    @ActivationConfigProperty(propertyName = "port", propertyValue = "3434"),
    @ActivationConfigProperty(propertyName = "queueManager", propertyValue = "A01"),
    @ActivationConfigProperty(propertyName = "channel", propertyValue = "CLIENT.TO") }, name = "MQMDB")
public class MyMessageListener implements MessageListener {
...

}

我知道它可以移动到ejb-jar.xml但是我可以将这个配置从代码移到jboss standalone.xml文件中吗?

原因是我们将为dev,test和live等每个环境提供单独的standalone.xml,因此更愿意将所有配置移出应用程序部署。

谢谢!

2 个答案:

答案 0 :(得分:0)

外部化配置的最简单方法是将激活属性放在ejb-jar.xml文件中:

<activation-config-property>
    <activation-config-property-name>hostName</activation-config-property-name>
    <activation-config-property-value>${wmq.host}</activation-config-property-value>
</activation-config-property>

请注意,该值使用属性替换语法:

${wmq.host}

根据需要为要替换的值添加属性。

然后,在standalone.xml中,确保启用规范替换:

<subsystem xmlns="urn:jboss:domain:ee:1.2">
    <spec-descriptor-property-replacement>true</spec-descriptor-property-replacement>
    <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
    <annotation-property-replacement>false</annotation-property-replacement>
</subsystem>

最后,将您的属性添加到standalone.xml文件中:

<system-properties>
    <property name="wmq.host" value="10.0.0.150"/>
    <property name="wmq.port" value="1414"/>
    <property name="wmq.queue.manager" value="MY.QUEUE.MANAGER"/>

答案 1 :(得分:0)

您可以在没有ejb-jar.xml的情况下进行操作, 添加

<annotation-property-replacement>true</annotation-property-replacement>

<subsystem xmlns="urn:jboss:domain:ee:4.0">

以及您的mdb类设置属性,如下所示

@ActivationConfigProperty(propertyName = "hostName", propertyValue = "${hostName}")

在standalone.xml中定义系统属性

<system-properties>
     <property name="hostName" value="1.1.1.1"/>
</system-properties>