42.4. JMS メッセージプロパティーの操作


概要

Apache CXF JMS トランスポートには、JMS メッセージのプロパティーを検査するために使用できるコンテキストメカニズムがあります。コンテキストメカニズムを使用して、JMS メッセージのプロパティーを設定することもできます。

42.4.1. JMS メッセージヘッダーの検査

概要

コンシューマーとサービスは、異なるコンテキストメカニズムを使用して JMS メッセージヘッダーのプロパティーにアクセスします。ただし、両方のメカニズムはヘッダープロパティーを org.apache.cxf.transports.jms.context.JMSMessageHeadersType オブジェクトとして返します。

サービスでの JMS メッセージヘッダーの取得

WebServiceContext オブジェクトから JMS メッセージヘッダーのプロパティーを取得するには、以下を行います。

  1. 「コンテキストの取得」 で説明されているようにコンテキストを取得します。
  2. org.apache.cxf.transports.jms.JMSConstants.JMS_SERVER_HEADERS パラメーターと共にメッセージコンテキストの get() メソッドを使用して、メッセージコンテキストからメッセージヘッダーを取得します。

例42.12「サービス実装での JMS メッセージヘッダーの取得」 は、サービスのメッセージコンテキストから JMS メッセージヘッダーを取得するためのコードを示しています。

例42.12 サービス実装での JMS メッセージヘッダーの取得

import org.apache.cxf.transport.jms.JMSConstants;
import org.apache.cxf.transports.jms.context.JMSMessageHeadersType;

@WebService(serviceName = "HelloWorldService",
                           portName = "HelloWorldPort",
                           endpointInterface = "org.apache.cxf.hello_world_jms.HelloWorldPortType",
                           targetNamespace = "http://cxf.apache.org/hello_world_jms")
  public class GreeterImplTwoWayJMS implements HelloWorldPortType
  {
    @Resource
    protected WebServiceContext wsContext;
    ...

    @WebMethod
    public String greetMe(String me)
    {
      MessageContext mc = wsContext.getMessageContext();
      JMSMessageHeadersType headers = (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_HEADERS);
       ...
     }
      ...
}

コンシューマーでの JMS メッセージヘッダープロパティーの取得

メッセージが JMS トランスポートから正常に取得されると、コンシューマーの応答コンテキストを使用して JMS ヘッダーのプロパティーを検査できます。さらに、「クライアント受信タイムアウト」 で説明されているように、クライアントがタイムアウトする前に応答を待機する時間の長さを設定または確認できます。 コンシューマーの応答コンテキストから JMS メッセージヘッダーを取得するには、次の手順を実行します。

  1. 「コンテキストの取得」 で説明されているように応答コンテキストを取得します。
  2. org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_RESPONSE_HEADERS をパラメーターとしてコンテキストの get() メソッドを使用して、応答コンテキストから JMS メッセージヘッダーのプロパティーを取得します。

例42.13「コンシューマー応答ヘッダーからの JMS ヘッダーの取得」 は、コンシューマーの応答コンテキストから JMS メッセージヘッダープロパティーを取得するためのコードを示しています。

例42.13 コンシューマー応答ヘッダーからの JMS ヘッダーの取得

import org.apache.cxf.transports.jms.context.*;
// Proxy greeter initialized previously
BindingProvider  bp = (BindingProvider)greeter;
Map<String, Object> responseContext = bp.getResponseContext();
JMSMessageHeadersType responseHdr = (JMSMessageHeadersType)
                           responseContext.get(JMSConstants.JMS_CLIENT_RESPONSE_HEADERS);
...
}

例42.13「コンシューマー応答ヘッダーからの JMS ヘッダーの取得」 のコードは、以下を行います。

プロキシーを BindingProvider にキャストします。

応答コンテキストを取得します。

応答コンテキストから JMS メッセージヘッダーを取得します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.