クラス MessageListenerAdapter
- 実装されたすべてのインターフェース:
MessageListenerEE
、SessionAwareMessageListener<MessageEE>
、SubscriptionNameProvider
デフォルトでは、受信 JMS メッセージのコンテンツはターゲットリスナーメソッドに渡される前に抽出され、ターゲットメソッドが生の Message
EE の代わりに文字列やバイト配列などのメッセージコンテンツ型を操作できるようにします。メッセージ型の変換は Spring JMS MessageConverter
に委譲されます。デフォルトでは、SimpleMessageConverter
が使用されます。(このような自動メッセージ変換を行わない場合は、必ず MessageConverter
を null
に設定してください。)
ターゲットリスナーメソッドが null 以外のオブジェクト(通常は String
またはバイト配列などのメッセージコンテンツ型のオブジェクト)を返す場合、JMS Message
にラップされ、レスポンスの宛先(JMS の「返信先」の宛先)に送信されます。または specified default destination
)。
注 : レスポンスメッセージの送信は、SessionAwareMessageListener
エントリポイントを使用している場合にのみ使用できます(通常、Spring メッセージリスナーコンテナーを介して)。標準の JMS MessageListener
EE としての使用は、レスポンスメッセージの生成をサポートしていません。
このアダプタークラスに準拠するメソッドシグネチャーの例を以下に示します。この最初の例では、すべての Message
型を処理し、各 Message
型の内容を引数として渡します。これらのメソッドはすべて void
を返すため、Message
は返送されません。
public interface MessageContentsDelegate { void handleMessage(String text); void handleMessage(Map map); void handleMessage(byte[] bytes); void handleMessage(Serializable obj); }次の例では、すべての
Message
型を処理し、実際の(未加工の) Message
を引数として渡しています。繰り返しますが、これらのメソッドはすべて void
を返すため、Message
は返送されません。public interface RawMessageDelegate { void handleMessage(TextMessage message); void handleMessage(MapMessage message); void handleMessage(BytesMessage message); void handleMessage(ObjectMessage message); }この次の例は、
TextMessages
EE の String
コンテンツを使用するだけの Message
デリゲートを示しています。Message
処理メソッドの名前が original
とどのように異なるかにも注意してください(これは、付随する Bean 定義で構成する必要があります)。この場合も、メソッドが void
を返すため、Message
は返送されません。public interface TextMessageContentDelegate { void onMessage(String text); }この最後の例は、
TextMessages
EE の String
コンテンツを使用するだけの Message
デリゲートを示しています。このメソッドの戻り値の型が String
であることに注意してください。これにより、構成済みの MessageListenerAdapter
がレスポンスとして TextMessage
EE を送信します。public interface ResponsiveTextMessageContentDelegate { String handleMessage(String text); }詳細な例と説明については、このクラス(および付随する XML 構成)を詳細に説明している Spring リファレンスドキュメントを参照してください。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller
- 関連事項:
setDelegate(java.lang.Object)
setDefaultListenerMethod(java.lang.String)
AbstractAdaptableMessageListener.setDefaultResponseDestination(jakarta.jms.Destination)
AbstractAdaptableMessageListener.setMessageConverter(org.springframework.jms.support.converter.MessageConverter)
SimpleMessageConverter
SessionAwareMessageListener
AbstractMessageListenerContainer.setMessageListener(java.lang.Object)
フィールドサマリー
クラス org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクター説明デフォルト設定で新しいMessageListenerAdapter
を作成します。MessageListenerAdapter
(ObjectSE delegate) 指定されたデリゲートの新しいMessageListenerAdapter
を作成します。メソッドのサマリー
修飾子と型メソッド説明protected ObjectSE[]
buildListenerArguments
(ObjectSE extractedMessage) ターゲットリスナーメソッドに渡される引数の配列を作成します。protected StringSE
委譲先のデフォルトのリスナーメソッドの名前を返します。protected ObjectSE
リッスンしているデリゲートメッセージにターゲットオブジェクトを返します。protected StringSE
getListenerMethodName
(MessageEE originalMessage, ObjectSE extractedMessage) 指定されたメッセージを処理することになっているリスナーメソッドの名前を決定します。このメッセージリスナーオブジェクトのサブスクリプション名を決定します。protected ObjectSE
invokeListenerMethod
(StringSE methodName, ObjectSE[] arguments) 指定されたリスナーメソッドを呼び出します。void
SpringSessionAwareMessageListener
エントリポイント。void
setDefaultListenerMethod
(StringSE defaultListenerMethod) 特定のリスナーメソッドが決定されていない場合に、委譲先のデフォルトリスナーメソッドの名前を指定します。void
setDelegate
(ObjectSE delegate) リスニングするメッセージを委譲するターゲットオブジェクトを設定します。クラス org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener から継承されたメソッド
buildMessage, extractMessage, getDestinationResolver, getMessageConverter, getMessagingMessageConverter, getResponseDestination, getResponseQosSettings, handleListenerException, handleResult, onMessage, postProcessProducer, postProcessResponse, preProcessResponse, resolveDefaultResponseDestination, sendResponse, setDefaultResponseDestination, setDefaultResponseQueueName, setDefaultResponseTopicName, setDestinationResolver, setHeaderMapper, setMessageConverter, setResponseQosSettings
フィールドの詳細
ORIGINAL_DEFAULT_LISTENER_METHOD
デフォルトのリスナーメソッドのすぐに使用できる値: "handleMessage"。- 関連事項:
コンストラクターの詳細
MessageListenerAdapter
public MessageListenerAdapter()デフォルト設定で新しいMessageListenerAdapter
を作成します。MessageListenerAdapter
指定されたデリゲートの新しいMessageListenerAdapter
を作成します。- パラメーター:
delegate
- デリゲートオブジェクト
メソッドの詳細
setDelegate
リスニングするメッセージを委譲するターゲットオブジェクトを設定します。指定したリスナーメソッドは、このターゲットオブジェクトに存在する必要があります。明示的なデリゲートオブジェクトが指定されていない場合、リスナーメソッドは、このアダプターインスタンス(つまり、このアダプターのカスタムサブクラス)に存在し、リスナーメソッドを定義することが想定されています。
getDelegate
リッスンしているデリゲートメッセージにターゲットオブジェクトを返します。setDefaultListenerMethod
特定のリスナーメソッドが決定されていない場合に、委譲先のデフォルトリスナーメソッドの名前を指定します。デフォルトの値は"handleMessage"
です。getDefaultListenerMethod
委譲先のデフォルトのリスナーメソッドの名前を返します。onMessage
SpringSessionAwareMessageListener
エントリポイント。メッセージ引数を適切に変換して、メッセージをターゲットリスナーメソッドに委譲します。ターゲットメソッドが null 以外のオブジェクトを返す場合は、JMS メッセージをラップして送り返します。
- 次で指定:
- インターフェース
SessionAwareMessageListener<MessageEE>
のonMessage
- 次で指定:
- クラス
AbstractAdaptableMessageListener
のonMessage
- パラメーター:
message
- 受信 JMS メッセージsession
- 操作する JMS セッション- 例外:
JMSExceptionEE
- JMS API メソッドによってスローされた場合
getSubscriptionName
インターフェースからコピーされた説明:SubscriptionNameProvider
このメッセージリスナーオブジェクトのサブスクリプション名を決定します。- 次で指定:
- インターフェース
SubscriptionNameProvider
のgetSubscriptionName
getListenerMethodName
protected StringSE getListenerMethodName(MessageEE originalMessage, ObjectSE extractedMessage) throws JMSExceptionEE 指定されたメッセージを処理することになっているリスナーメソッドの名前を決定します。デフォルトの実装は、構成されているデフォルトのリスナーメソッドがあれば、それを返すだけです。
- パラメーター:
originalMessage
- JMS リクエストメッセージextractedMessage
- 引数としてリスナーメソッドに渡される、変換された JMS リクエストメッセージ- 戻り値:
- リスナーメソッドの名前 (非
null
) - 例外:
JMSExceptionEE
- JMS API メソッドによってスローされた場合- 関連事項:
buildListenerArguments
ターゲットリスナーメソッドに渡される引数の配列を作成します。単一のメッセージオブジェクトから複数のメソッド引数を作成できるようにします。デフォルトの実装では、指定されたメッセージオブジェクトを唯一の要素として配列を構築します。つまり、抽出されたメッセージは、たとえそれが配列であっても、常に単一のメソッド引数に渡され、ターゲットメソッドには対応する配列の型の単一の引数が宣言されます。
これをオーバーライドして、配列などの特別なメッセージコンテンツを異なる方法で処理することができます。たとえば、メッセージ配列の各要素を個別のメソッド引数として渡します。
- パラメーター:
extractedMessage
- メッセージの内容- 戻り値:
- リスナーメソッドに渡される引数の配列 (個別のメソッド引数に対応する配列の各要素)
invokeListenerMethod
@Nullable protected ObjectSE invokeListenerMethod(StringSE methodName, ObjectSE[] arguments) throws JMSExceptionEE 指定されたリスナーメソッドを呼び出します。- パラメーター:
methodName
- リスナーメソッドの名前arguments
- 渡されるメッセージ引数- 戻り値:
- リスナーメソッドから返された結果
- 例外:
JMSExceptionEE
- JMS API メソッドによってスローされた場合- 関連事項: