1

我有一个运行 JBoss4.2.1 的服务器,其中包含一个 JMS 主题。我还有多个终端,每个终端都运行自己的 JBoss,并带有一个 EJB3 消息驱动 bean,需要使用持久订阅来订阅主题。由于每个订阅都需要指定唯一的 clientId 和 subscriptionName,因此我无法对 ActivationConfigProperty 注释中的值进行硬编码,也无法在部署描述符文件中指定值。

那么,问题是如何指定这些值?我是否在 JBoss 配置文件中执行此操作?

如果可能,请提供完整的示例配置。

谢谢。

4

1 回答 1

1

这可以通过使用 ejb-jar.xml 配置文件中的条目组合并将值作为参数提供给 JBoss 启动命令来完成。

META-INF/ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
         version="3.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">

    <enterprise-beans>

        <message-driven>
            <ejb-name>MyMsgDrivenBeanMDB</ejb-name>
            <ejb-class>com.mdb.MyMsgDrivenBeanMDB</ejb-class>
            <activation-config>
                <activation-config-property>
                    <activation-config-property-name>clientId</activation-config-property-name>
                    <activation-config-property-value>${client.id}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                    <activation-config-property-name>subscriptionName</activation-config-property-name>
                    <activation-config-property-value>${subscription.name}</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                    <activation-config-property-name>reconnectInterval</activation-config-property-name>
                    <activation-config-property-value>60</activation-config-property-value>
                </activation-config-property>
            </activation-config>
        </message-driven>

    </enterprise-beans>
</ejb-jar>

通过在 ejb-jar.xml 文件中使用 ${variable} 表示法指定值,然后可以从 JBoss 启动命令中将它们作为服务器选项获取。

-Dclient.id=client-01 -Dsubscription.name=subscription-01

于 2009-05-28T08:48:11.330 回答