2012-03-28 7 views
0

私は豆最良の方法は、JMS宛先にMDBを結ぶこと

をメッセージ駆動型を持っている
@MessageDriven(ejbName = "TestMDB", 
    destinationJndiName="test.QueueIn", destinationType = "javax.jms.Queue") 
public class TestMDB extends GenericMessageDrivenBean implements 
    MessageDrivenBean, MessageListener { 
    ..... 
} 

I「は、Javaとの直接の宛先リファレンス「test.QueueIn」を交換したいと思います:コンプ/ ENV/JMS/TestQueueIn "表記です。これにより、Javaコードの代わりにデプロイメント記述子にMDBの宛先を指定することができます。つまり、コンパイル時ではなく、デプロイメント時にMDBの宛先を特定する必要があります。

これは可能ですか?または、参照インダイレクションを作成するより良い方法はありますか?

+0

デプロイメント記述子でコンフィグレーションしますか? –

+0

はい、コード内にリソース参照のみを持ち、リソースをデプロイメント記述子で指定したいとします。この質問には、2つの部分があります。destinationJndiNameの代わりにコードで使用する注釈。そして、デプロイメント記述子に書き込むもの。 – xarx

答えて

1

私はその方法がわかりましたが、その理想がわかりません。

@ResourceEnvRef(name="jms/RequestQueue", type="javax.jms.Queue", jndiName="test.QueueIn"), 
@MessageDriven(ejbName = "TestMDB", destinationJndiName="java:comp/env/jms/RequestQueue", destinationType = "javax.jms.Queue") 
public class TestMDB extends GenericMessageDrivenBean implements 
    MessageDrivenBean, MessageListener { 
    ..... 
} 

@ResourceEnvRefのjndiNameはオプションの属性なので、コードで指定する必要はありません。しかし、たとえそれがデフォルト値として扱われても、(生成された)デプロイメント記述子でいつでも変更することができます。

関連する問題