如何在不对硬编码值的情况下为EJB3消息驱动的bean持久订阅指定clientId和subscriptionName?

时间:2009-05-25 07:27:40

标签: jboss jms jboss-mdb

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

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

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

感谢。

1 个答案:

答案 0 :(得分: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 start命令中选择它们作为服务器选项。

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