Jboss 如何为EJB3消息驱动bean持久订阅指定clientId和subscriptionName,而无需硬编码这些值?

Jboss 如何为EJB3消息驱动bean持久订阅指定clientId和subscriptionName,而无需硬编码这些值?,jboss,jms,jboss-mdb,Jboss,Jms,Jboss Mdb,我有一个运行JBoss4.2.1的服务器,其中包含一个JMS主题。我还有多个终端,每个终端都运行自己的JBoss,带有EJB3消息驱动bean,需要使用持久订阅订阅主题。由于每个订阅都需要指定唯一的clientId和subscriptionName,因此我无法硬编码ActivationConfigProperty注释中的值,也无法指定部署描述符文件中的值 所以,问题是如何指定这些值?我是在JBoss配置文件中完成的吗 如果可能,请提供完整的示例配置 谢谢。这可以通过使用ejb-jar.xml配置

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

所以,问题是如何指定这些值?我是在JBoss配置文件中完成的吗

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


谢谢。

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

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>

MyMsgDrivenBeanMDB
com.mdb.MyMsgDrivenBeanMDB
客户
${client.id}
订阅名
${subscription.name}
重新连接区间
60
通过在ejb-jar.xml文件中使用${variable}符号指定这些值,可以从JBoss start命令中获取这些值作为服务器选项


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

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

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>

MyMsgDrivenBeanMDB
com.mdb.MyMsgDrivenBeanMDB
客户
${client.id}
订阅名
${subscription.name}
重新连接区间
60
通过在ejb-jar.xml文件中使用${variable}符号指定这些值,可以从JBoss start命令中获取这些值作为服务器选项


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

如果不想添加启动参数,可以通过JMX中的SystemProperties服务找到现有属性。一些独特的组合应该可以工作:${jboss.bind.address}-${jboss.server.home.dir},或者${java.server.rmi.codebase}。如果您不想添加启动参数,可以通过JMX中的SystemProperties服务找到现有属性。应该可以工作的几个独特组合:${jboss.bind.address}-${jboss.server.home.dir},或${java.server.rmi.codebase}