2009-05-25 16 views
1

Ich habe einen Server mit JBoss4.2.1, der ein JMS-Thema enthält. Ich habe auch mehrere Terminals, von denen jedes sein eigenes JBoss mit einer EJB3-Message-Driven-Bean betreibt, die das Thema mit dauerhaften Abonnements abonnieren müssen. Da jedes Abonnement eine eindeutige clientId und subscriptionName angeben muss, kann ich die Werte in den ActivationConfigProperty-Annotationen nicht fest codieren und kann die Werte in den Deployment-Deskriptor-Dateien nicht angeben.Wie geben Sie clientId und subscriptionName für EJB3 message driven bean durable-Subskriptionen an, ohne die Werte hart zu codieren?

Also ist die Frage, wie ich diese Werte angeben? Mache ich das in JBoss-Konfigurationsdateien?

Bitte geben Sie nach Möglichkeit eine vollständige Beispielkonfiguration an.

Danke.

Antwort

1

Dies kann durch eine Kombination von Einträgen in der Konfigurationsdatei ejb-jar.xml und die Angabe der Werte als Parameter für den JBoss-Startbefehl erfolgen.

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> 

durch die Werte unter Angabe der $ {variable} Notation in der ejb-jar.xml-Datei können sie dann nach oben aus dem JBoss-Startbefehl ausgewählt werden als Serveroptionen.

-Dclient.id = Client-01 -Dsubscription.name = Abonnement-01

+0

Wenn Sie Start Hinzufügen von Parametern vermeiden wollen, können Sie vorhandene Eigenschaften über den SystemProperties Service in JMX finden. Ein paar einzigartige Kombinationen, die funktionieren sollten: $ {jboss.bind.address} - $ {jboss.server.home.dir} oder $ {java.server.rmi.codebase} – pra