Comment le déploiement de l'ordre de configuration et EJB de file d'attente JMS dans JBoss 5?

StackOverflow https://stackoverflow.com/questions/4616078

Question

J'utilise JBoss [EAP] 5.0.0.GA et j'ai une oreille qui contient un pot EJB qui contient quelques BDM qui dépendent de l'existence des files d'attente JMS qu'ils utilisent. Lorsque j'ai configuré les files d'attente dans .../server/all/deploy/messaging/myqueues-service.xml il n'y avait pas de problème.

Cependant, je voulais configurer les files d'attente dans le fichier EAR pour éviter d'avoir à apporter des modifications à la configuration JBoss directement. Pas de problème, je mets mon fichier myqueues-service.xml dans la racine de l'oreille et ajouté la référence à mon jboss-app.xml comme suit:

<jboss-app>
    <module-order>strict</module-order>
    <loader-repository>
        seam.jboss.org:loader=my-ear.ear
    </loader-repository>
    <module>
        <service>myqueues-service.xml</service>
    </module>
</jboss-app>

Cependant, quand je fais cela, les charges JBoss le jar EJB (contenu dans mon-ear.ear) d'abord, puis configure les files d'attente JMS après. Cela se traduit par des erreurs lors de la MDB sont chargés:

12:16:02,714 WARN  [JmsActivation] Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@13a59e .....
javax.naming.NameNotFoundException: MyQueue not bound

Il est pas un problème énorme, comme plus tard les banques multilatérales de développement se reconnecter avec succès à JMS:

12:16:12,698 INFO  [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@f91ad5
12:16:12,823 INFO  [JmsActivation] Reconnected with messaging provider.

Mais je voudrais vraiment éviter d'avoir des erreurs, et pour faire que je besoin d'un moyen de forcer JBoss pour configurer les files d'attente JMS d'abord, avant de charger le pot EJB. Est-ce qu'il y a un moyen de faire ça? Pour référence, voici la application.xml pour l'AER:

<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
  <display-name>my-ear</display-name>
  <module>
    <ejb>my-ejb.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>my.war</web-uri>
      <context-root>myroot</context-root>
    </web>
  </module>
</application>

Toutes les suggestions apprécié.

Était-ce utile?

La solution

Ok, jaikiran pai sur le community.jboss. org forum me ont aidé. La solution est d'ajouter la file d'attente JMS en tant que dépendance de la BMD. Dans mon cas, je l'annotation @depends:

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MyQueue") })
@Depends("jboss.messaging.destination:service=Queue,name=MyQueue")
public class MyMessageListener implements MessageListener {
    ...
}

Vous pourriez faire la même chose en utilisant jboss.xml si vous n'utilisez pas annotations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top