1

我使用 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,因此我们更愿意将所有配置移出应用程序部署。

谢谢!

4

2 回答 2

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"/>
于 2015-02-15T15:17:34.157 回答
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>
于 2020-10-07T11:38:27.810 回答