AdapterMessageクラス(oracle.bm.ebiadapters.AdapterMessage)は、E-Business統合メッセージ・アダプタを使用して送受信されるメッセージ・ペイロードに必要なラッパーです。AdapterMessageクラスは、次の2種類のペイロードをラップできます。
次のコードをコールして、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型です。
Business Components for Java送信アダプタでは、生成されたクライアント・コードの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ヘッダーへ(あるいは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ベース・クラスのカスタム・プロパティ・マップに置くことができます。Business Components for Java受信アダプタ
Business Components for Java送信アダプタ