0

メッセージ駆動型 Bean があります

@MessageDriven(ejbName = "TestMDB", 
    destinationJndiName="test.QueueIn", destinationType = "javax.jms.Queue")
public class TestMDB extends GenericMessageDrivenBean implements
    MessageDrivenBean, MessageListener {
    .....
}

直接宛先参照「test.QueueIn」を「java:comp/env/jms/TestQueueIn」表記に置き換えたいと思います。これにより、Java コードではなくデプロイメント記述子で MDB の宛先を指定できるようになります。つまり、コンパイル時ではなく、展開時に MDB の宛先を決定したいと考えています。

これは可能ですか?または、参照の間接化を作成するより良い方法はありますか?

4

1 に答える 1

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はオプションの属性であるため、コードで指定する必要はありません。ただし、これを行う場合でも、これは単なるデフォルト値として機能し、(生成された)デプロイメント記述子でいつでも変更できます。

于 2012-03-29T11:20:28.400 に答える