Как указать clientId и subscriptionName для долговечной подписки EJB3, управляемой сообщениями, без жесткого кодирования значений? - PullRequest
1 голос
/ 25 мая 2009

У меня есть сервер под управлением JBoss4.2.1, содержащий тему JMS. У меня также есть несколько терминалов, каждый из которых запускает свой собственный JBoss с управляемым сообщениями EJB3-компонентом, которому необходимо подписаться на тему с помощью длительных подписок. Поскольку каждая подписка должна указывать уникальный clientId и subscriptionName, я не могу жестко кодировать значения в аннотациях ActivationConfigProperty и не могу указать значения в файлах дескриптора развертывания.

Итак, вопрос в том, как мне указать эти значения? Я делаю это в файлах конфигурации JBoss?

Пожалуйста, предоставьте полный пример конфигурации, если это возможно.

Спасибо.

1 Ответ

1 голос
/ 28 мая 2009

Это можно сделать, используя комбинацию записей в файле конфигурации 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>

Указав значения в нотации $ {variable} в файле ejb-jar.xml, их можно будет затем выбрать из команды запуска JBoss в качестве параметров сервера.

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

...