2011-01-06 10 views
5

私はJBoss [EAP] 5.0.0.GAを使用していますが、使用するJMSキューの存在に依存するいくつかのMDBを含むEJB jarを含むEARを持っています。 .../server/all/deploy/messaging/myqueues-service.xmlにキューを設定しても問題はありませんでした。JBoss 5でEJBとJMSキューのコンフィグレーションを行う方法は?

しかし、JBossの設定を直接変更する必要がないように、EARファイルのキューを構成したかったのです。いいえ問題は、私はEARのルートに私のmyqueues-service.xmlファイルを入れて、次のように私のjboss-app.xmlへの参照を追加しました:私はそれを行うとき

<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> 

しかし、JBossは私の耳に含まれるEJB jarファイルを(ロードしません。 ear)を作成し、その後、JMSキューを構成します。

12:16:02,714 WARN [JmsActivation] Failure in jms activation [email protected] ..... 
javax.naming.NameNotFoundException: MyQueue not bound 

それは、後にMDBの上、大きな問題ではない、正常JMSへの再接続:

12:16:12,698 INFO [JmsActivation] Attempting to reconnect [email protected] 
12:16:12,823 INFO [JmsActivation] Reconnected with messaging provider. 

しかし、私は本当にすべてを避けるしたいMDBがロードされるとき、これはエラーになりますエラーを発生させるためには、EJB jarをロードする前に、まずJBossにJMSキューを強制的に設定させる方法が必要です。これを行う方法はありますか?参考のため、ここでのapplication.xmlはEARのためです:

<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> 

任意の提案を高く評価しました。

答えて

6

ok、jaikiran pai community.jboss.orgフォーラムで私を助けました。解決策は、JMSキューをMDBに依存するものとして追加することです。あなたは注釈を使用していない場合は、同じ使用のjboss.xmlを行うことができ

@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 { 
    ... 
} 

:私の場合は、@depends注釈を使用しました。

+1

myqueues-service.xmlファイルを.../server/all/deploy/messaging /フォルダに配置したくない場合は、 EARのどちらかであれば、/ server/all/deploy /に置くことができます(Eclipseの "Make Deployable"を使うか、そこにコピーするだけです)。これにより、MDB内の明示的な依存関係を宣言する必要がなくなり、同時にデフォルトのJBossサーバー設定を変更しなくなります。 – mluisbrown