JRun によるアプリケーションの開発
|
|
Java でのメッセージング
|
メッセージ コンポーネント
メッセージは次の部分に分けられます。
- ヘッダ メッセージの識別と階層のために、クライアントとサーバーの両方で使用される情報
- プロパティ 追加のヘッダ プロパティ。プロパティにはアプリケーション固有のプロパティ、標準プロパティ、サーバー固有のプロパティがあります。
- 本文 メッセージの本文。メッセージの本文には、数種類の定義済みタイプのいずれかを使用できます。
メッセージ ヘッダ フィールド
JRun では、JMS メッセージ ヘッダ フィールドがサポートされていて、これらのフィールドは JMS メッセージ受信者に送信されます。JRun でサポートされている JMS メッセージ ヘッダ フィールドの概要は、次の表のとおりです。
フィールド |
内容 |
設定者 |
JMSDestination
|
メッセージの送信先を表す Destination オブジェクトが含まれています。
|
JRun
|
JMSDeliveryMode
|
配信モードが含まれています。有効な値は
DeliveryMode.PERSISTENT と
DeliveryMode.NON_PERSISTENT です。
|
JRun
|
JMSMessageID
|
固有のメッセージ ID が含まれています。
|
JRun
|
JMSTimestamp
|
メッセージが JRun に送信された時刻が含まれています。
|
JRun
|
JMSCorrelationID
|
応答と、関連する要求をリンクするアプリケーション固有の文字列が含まれています。
|
JRun
|
JMSReplyTo
|
応答の送信先となる Destination オブジェクトが含まれています。応答は要求されていませんが、Destination オブジェクトがこのフィールドに含まれているのは応答が期待されていることを示しています。
|
JRun
|
JMSRedelivered
|
メッセージを再送信するかどうかを表す boolean が含まれています。コンシューマにより、
JMSRedelivered が true に設定されたメッセージが受信された場合、このメッセージは以前配信されたが、コンシューマが受信を認めていなかったと考えられます。
|
クライアント
|
JMSType
|
メッセージ タイプを表す String が含まれています。
|
クライアント
|
JMSExpiration
|
メッセージの有効期限を指定する long が含まれています。JRun では、クライアントにより指定された Time‐to‐Live の値に送信時間の GMT を加えてこの時刻を設定します。
|
JRun
|
JMSPriority
|
メッセージの優先順位が含まれます。優先順位は 0 (最下位) から 9 (最上位) の間で指定します。
|
JRun
|
TextInterface
や MapInterface
などのコンテンツ固有のメッセージ インターフェイスにより拡張された Message
インターフェイスにあるメソッドを使用して、ヘッダ フィールドにアクセスします。
メッセージ プロパティ
JRun は JMS 仕様で定義されているオプションの JMSX 接頭辞付きのメッセージ プロパティをサポートしません。しかし、Message
オブジェクト メソッドを使用してプロパティを取得および設定できます。たとえば、次のコードの一部分を使用して、メッセージを送信する前にプロパティを設定できます。
...
try {
// ユーザ ID のプロパティを設定します。thisUser String 変数を想定します。
if(message != null) {
message.setStringProperty("UserID", thisUser);
message.setText(text);
// キューに送信します。メッセージは 5 分間存続します。
sender.send(_message, delivery, priority, 5 * 60 * 1000);
}else {
// 1 つのサーブレットまたは JSP ページでの使用法を想定します。
out.println("<H1>Message was null</H1>");
}
}
...
次のコードの一部分を使用して、メッセージを受信したときにプロパティを取得できます。
final TextMessage message = (TextMessage)(_receiver.receiveNoWait());
// すべてのプロパティを取得します。
Enumeration e = message.getPropertyNames();
if(!e.hasMoreElements()) {
// 1 つのサーブレットまたは JSP ページでの使用法を想定します。
out.println("<h1>no properties</H1>");
}
while(e.hasMoreElements()) {
String prop = (String)e.nextElement();
out.print("<p> " + prop);
// すべてのプロパティが Strings であると想定します。
out.println(":" + message.getStringProperty(prop));
}
メッセージ本文の種類
JMS 1.0.2 仕様では、メッセージ本文のフォームについて説明されています。これらのフォームは、Message
を拡張したインターフェイスにより定義されます。
次の表は、EJB メッセージ本文インターフェイスの概要についてまとめたものです。
インターフェイス |
説明 |
コメント |
StreamMessage
|
Java プリミティブ値のストリームが含まれています。
|
このタイプは値の代入と読み込みが順次に行われます。
|
MapMessage
|
名前/値ペアのセットが含まれます。名前は String オブジェクト、値は Java プリミティブ タイプです。
|
これらには、列挙によって連続的にアクセスするか、名前によってランダムにアクセスします。
|
TextMessage
|
String オブジェクトを 1 つ含んでいます。
|
TextMessage はテキスト メッセージまたは XML 形式のデータを持つメッセージで使用します。
|
ObjectMessage
|
Serializable Java オブジェクトが含まれています。
|
いずれかの JDK 1.2 コレクション クラスを使用できます。
|
BytesMessage
|
未解釈のバイト ストリームが含まれています。
|
通常、このタイプの本文は使用しません。
|
JRun では、これらのインターフェイスは allaire.ejipt._jms
にある類似する名前のクラスを通じて実装されます。
Copyright © 2001, Macromedia Inc. All rights reserved. |
|