AdapterMessage
クラス(oracle.bm.ebiadapters.AdapterMessage
)は、E-Business統合メッセージ・アダプタを使用して送受信される、メッセージ・ペイロードに必要なラッパーです。 AdapterMessage
クラスは、次の2種類のペイロードをラップできます。
java.lang.String
oracle.jbo.server.ViewObject
次のようにコールして、String
ペイロードを含むAdapterMessage
のインスタンスを新しく作成します。
AdapterMessage message = AdapterMessage.newStringMessage(payload)
ここで、payload
はjava.lang.String
型です。
標準送信アダプタでは、生成されたクライアント・コードのsendMessage
メソッドがAdapterMessage
オブジェクトの配列を受け取ります。各AdapterMessage
オブジェクトには、java.lang.String
ペイロードが含まれます。 アダプタに渡す前に、アプリケーション・データをAdapterMessage
オブジェクトとしてラップして配列にするコードを提供する必要があります。
標準受信アダプタは、一度に1つのAdapterMessage
を受信し、生成したクライアント・コードからそれを返します。同様に、返されたデータをアンラップするコードを用意する必要があります。 たとえば、getPayload()
メソッドを使用してAdapterMessage
オブジェクトからペイロードを取り出し、そのペイロードを元のタイプに返すことができます。
次のコードをコールして、ViewObject
ペイロードを含むAdapterMessage
のインスタンスを新しく作成します。
AdapterMessage message = AdapterMessage.newViewObjectMessage(payload)
ここで、payload
はoracle.jbo.server.ViewObject
型です。
ビジネス・コンポーネント送信アダプタでは、生成されたクライアント・コードのsendMessage
メソッドがAdapterMessage
オブジェクトの配列を受け取ります。各AdapterMessage
オブジェクトには、oracle.jbo.server.ViewObject
ペイロードが含まれます。 アダプタに渡す前に、アプリケーション・データをAdapterMessage
オブジェクトとしてラップして配列にするコードを提供する必要があります。
BESAdapterMessage
クラス(oracle.bm.ebiadapters.BESAdapterMessage
)は、AdapterMessage
のサブクラスです。このクラスは、完全な統合のためにE-Business統合ジェネレータで必要とする追加機能を提供します。 BESAdapterMessage
クラスを使用すると、ペイロードの設定のみではなく、JMSヘッダー・フィールドにマップされるメタデータ・プロパティも設定できます。メタデータ・プロパティには、必須のプロパティとオプションのプロパティがあります。 たとえば、setEventName(String eventName)
およびsetEventKey(String eventKey)
メソッドは、必須のEvent NameプロパティおよびEvent Keyプロパティの設定に使用できます。これらのプロパティを設定すると、JMSヘッダー・プロパティにマップされ、Oracle AQキューの間でJMSメッセージが正しく伝播されるようになります。
AdapterMessage
クラスを使用すると、アダプタ間でメッセージ・ペイロードを送信できます。 ペイロード内のデータのみではなく、メタデータも送信する必要がある場合や、メッセージのJMSヘッダーとの間でプロパティをマップするカスタム・メソッドを指定する必要がある場合は、AdapterMessage
の独自のサブクラスを作成できます。
AdapterMessage
のサブクラスは、AdapterMessage
ベース・クラスのプロパティ・マップを使用して、プロパティを格納および取得できます。このクラスには、プロパティ・マップのコンテンツを操作するためのメソッドが含まれ、プロパティをJMSヘッダーへ、またはJMSヘッダーからカスタム・マッピングできます。
マップのコンテンツを操作するための主なメソッドは次のとおりです。
public Object addProperty(String key, Object value)
: キーと値のペアをプロパティ・マップに追加します。
public Object getProperty(String key)
: キーからプロパティを検索し、関連する値を返します。
public boolean hasProperties()
: AdapterMessage
にあるプロパティ・マップがカスタム・プロパティを1つでも格納しているかどうかを判断します。
AdapterMessage
オブジェクトをサブクラス化して、JMSヘッダーにプロパティをマップするカスタム・メソッドを提供するには、encodeProperties
およびdecodeProperties
メソッドをオーバーライドします。これらのメソッドは、カスタム・プロパティをJMSヘッダーにどのように置くか、またはJMSヘッダーからカスタム・プロパティをどのように取り出すかを指定します。
protected TextMessage encodeProperties(TextMessage message)
: 送信アダプタがメッセージを送信するときに、AdapterMessage
のこのメソッド(またはそれをオーバーライドするサブクラス)がコールされます。 独自のAdapterMessage
サブクラスを作成する場合は、javax.jms.TextMessage
パラメータにより、カスタム・プロパティ・マップに格納されているプロパティを任意の方法で受け取り、JMSヘッダーに格納できます。 これは、setJMSType(String type)
およびsetStringProperty(String key, String value)
などのTextMessage
のメソッドを直接コールして行います。
protected TextMessage decodeProperties(TextMessage message)
: 受信アダプタがメッセージを受信すると、このメソッドがコールされます。 同様に、このメソッドをオーバーライドすると、JMSヘッダーからプロパティを取り出して、AdapterMessage
ベース・クラスのカスタム・プロパティ・マップに置くことができます。
Copyright © 1997, 2004, Oracle. All rights reserved.