2013-04-16 4 views
6

@MessageDriven(mappedName = "someDestinationName")の設定にmappedName注釈メッセージ駆動型Beanを使用する場合は、メッセージを受信するために、そこから先名は、ハード注釈でコーディングされた動的

は、実行時にこの情報を追加するためにそこに方法は何ですか?ベローは、Message Driven Beanのサンプルクラスです。

package mdb.beans; 

import javax.ejb.ActivationConfigProperty; 
import javax.ejb.MessageDriven; 
import javax.jms.Message; 
import javax.jms.MessageListener; 

@MessageDriven(mappedName = "someDestinationName", activationConfig = 
{ 
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") 
}) 
public class MDBSample implements MessageListener 
{  
    public MDBSample() 
    { 
     // constructor 
    } 

    @Override 
    public void onMessage(Message message) 
    { 
     // logic when message received 
    } 
} 

答えて

2

私が知る限り、いいえ、あなたはそれを行うことはできません。

デプロイメント時にをに変更しても、宛先(String)とBean

多分、再バインドのためのハックがあります。私はコンテナに強制的にMDBを解放し、宛先を変更して再初期化する(依存関係注入を行った後、構築ステップを実行するなど)が、アプリケーションサーバーが許可するかどうかは疑問です。

JSR-318(EJB 3.1仕様)の抜粋。

5.4.17メッセージ駆動型宛先Beanwith協会またはエンドポイント

Beanがコンテナに配備されたときにメッセージ駆動型Beanが宛先またはエンドポイントに関連付けられています。メッセージ駆動型Beanを宛先またはエンドポイントに関連付けるのはDeployerの責任です。

5.4.17.1 JMSメッセージ駆動型Bean

A JMSメッセージ駆動型Beanは、Beanがコンテナ内に配備されているJMS宛先(キューまたはトピック)に関連付けられています。メッセージ駆動型Beanをキューまたはトピックに関連付けるのはDeployerの責任です。

関連する問題