|
TIBCO® Rendezvous™ (TIBCO (www.tibco.com) の製品) を使用すると、分散プラットフォームで稼動するアプリケーション間でデータを交換することができます。WebLogic Integration™ の TIBCO Rendezvous (TIBCO RV) コントロールは、データへのシームレスな接続、および Rendezvous デーモンを使用したデータの転送を可能にします。認証されたメッセージ配信、分散キューなどの TIBCO Rendezvous によって、提供される機能を使用した通信が可能になります。Rendezvous デーモンがホスト マシン上で稼動しているか、またはリモートでホストにアクセスできれば、送信/受信アプリケーションは複数のプラットフォームに配置することができます。
注意 : | TIBCO RV コントロールは、WebLogic Integration の使用許諾を受けた場合にのみ、BEA Workshop for WebLogic Platform で使用できます。 |
BEA WebLogic Integration と共に TIBCO RV コントロールおよびイベント ジェネレータを使用しても、「ダイナミック ライブラリ」を含む TIBCO Rendezvous を使用する権限が付与されるわけではありません。TIBCO RV コントロールおよびイベント ジェネレータのユーザがこのような TIBCO 製品を使用するためには、有効なライセンスを TIBCO から取得する必要があります。Rendezvous のライセンス取得方法については、http://www.tibco.com を参照してください。
TIBCO RV コントロールにより、WebLogic Integration ビジネスプロセスは Rendezvous 環境でメッセージの送受信が行えます。この環境では、メッセージは Rendezvous デーモン (rvd
) および Rendezvous エージェント (rva
) 転送を使用して送信されます。
TIBCO RV コントロールを使用すると、XML、文字列、および TIBCO 独自の Rendezvous メッセージ (TibrvMsg
) 形式でメッセージを送受信できます。Rendezvous コントロールをコンフィグレーションするときに、TIBCO RV コントロールのプロパティを指定できます。また、実行時に動的に指定することも可能です。TIBCO RV コントロールの他の機能のいくつかを以下に示します。
TIBCO RV コントロールは WebLogic Integration で提供される他のコントロールを補完するものであり、他の WebLogic Integration ビジネス プロセスと一緒に使用できます。詳細については、『Integration コントロールを使用する』の「ビジネス プロセスでコントロールを使用する」を参照してください。
TIBCO RV イベント ジェネレータはサブジェクトでリスンし、受信したメッセージを WebLogic Integration メッセージ ブローカ チャネルにパブリッシュします。詳細については、「TIBCO Rendezvous イベント ジェネレータ」を参照してください。
新しい TIBCO RV コントロールのインスタンスを作成およびコンフィグレーションしてビジネス プロセスに追加できます。ここでは以下について説明します。
WebLogic Integration に新しい TIBCO RV コントロールを追加するには、以下の手順を実行します。
注意 : | [データ パレット] ビューが BEA Workshop for WebLogic Platform に表示されない場合は、メニュー バーから [ウィンドウビューの表示データ パレット] をクリックします。 |
[コントロールの挿入 : Tibco] ダイアログ ボックスが表示されます。
beaserv1:1589
です (beaserv1
はリモートのホスト名、1589
はポート ID を表します)。
TIBCO RV コントロールに認証メッセージング設定を指定するには、[コントロールの挿入 - Tibco RV] ダイアログの手順 3 で、[詳細] タブを使用して以下のタスクを実行します (図 14-1 を参照)。
TIBCO RV コントロールの新しいインスタンスを作成すると、プロジェクト内に新しい Java ファイルが作成されます。TIBCO RV コントロールのファイルの内容は、[コントロールの挿入 - Tibco RV] ダイアログで選択した設定によって異なります。
この節の 2 つの例により、認証されたメッセージおよび認証されていないメッセージ用に作成された コントロール ファイルを示します。
package processes;
import com.bea.control.*;
import com.bea.xml.XmlCursor;
import com.bea.control.tibrv.*;
import javax.resource.ResourceException;
import com.bea.xml.XmlObject;
/*
* カスタム Tibrv コントロール
*/
/**
* @jc:Transport service="7500" //<TIBCO デーモンがメッセージの送信に使用するサービス名>
network="beaserv1" //<TIBCO デーモンが通信をするネットワーク>
deamon="beasever1:7500 " //<TIBCO デーモンが動作している場所>
* @jc:UseCM usecm="true" //<認証メッセージングが有効化されていることを示します>
* @jc:CMTransport cmname="cmname.new" //<認証されたメッセージの名前>
ledgername="C:\TIBCO\TIBRV\Ledger.txt" //<台帳ファイルの名前と場所>
requestold="true" //<未確認応答メッセージはすべて保存されることを示します>
syncledger="true"//<台帳ファイルの同期更新を実行します>
*/
public interface sendReq extends TibcoRV, com.bea.control.ControlExtension
{
/*
* 本 JCX のバージョン番号以前のバージョンのインスタンスの会話が無効であることを
* 確認するために、この番号はこのコントロールの新しいバージョンでは
* インクリメントされる。
*/
static final long serialVersionUID = 1L;
public void addListenerForCM(String cmName, String subject);
}
package processes;
import com.bea.control.*;
import com.bea.xml.XmlCursor;
import com.bea.control.tibrv.*;
import javax.resource.ResourceException;
import com.bea.xml.XmlObject;
/*
* カスタム Tibrv コントロール
*/
/**
* @jc:Transport service="7500" //<TIBCO デーモンがメッセージの送信に使用するサービス名>
network="beaserv1" //<TIBCO デーモンが通信するネットワーク>
deamon="beasever1:7500 " //<TIBCO デーモンが動作している場所>
* @jc:UseCM usecm="false" //<認証メッセージングが無効化されていることを示します>
* @jc:CMTransport cmname=""
ledgername=""
requestold="false"
syncledger="false"
*/
public interface sendReq extends TibcoRV, com.bea.control.ControlExtension
{
/*
* 本 JCX のバージョン番号以前のバージョンのインスタンスの会話が無効であることを
* 確認するために、この番号はこのコントロールの新しいバージョンでは
* インクリメントされる。
*/
static final long serialVersionUID = 1L;
}
この節では、サブジェクト名の構築の詳細について説明します。TIBCO Rendezvous 環境のそれぞれのメッセージにはサブジェクト名が含まれています。アプリケーションはメッセージを作成し、Rendezvous 環境をからそれをサブジェクトと共に送信します。もう一方のアプリケーションは、サブジェクトでリスンすることによって、メッセージを受け取ります。
サブジェクト名の定義には、長さ、構造、および特殊文字の使用法など、基本的な制約があります。システム設計者および開発者がサブジェクトの命名規則を設定する場合は、以下の点を留意する必要があります。
警告 : | 制約および規則は TIBCO Rendezvous により実装されるため、この節の内容は参考情報です。制約、ガイドライン、およびサンプルの最新情報については、TIBCO Rendezvous 製品ドキュメントを参照してください。 |
警告 : | http://www.tibco.com |
sendMessage
、sendReply
、または sendRequest
関数、および TIBCO イベント ジェネレータのいずれか 1 つを用いて、TIBCO RV コントロールによるメッセージの送受信が行えます。メッセージは、Rendezvous 独自のデータ フォーマット、文字列、および XML の形式にすることができます。
この節では、メッセージ送信に使用するさまざまな関数についての情報を提供します。メッセージを送信するには、送信するメッセージのデータ型に基づく関数を選択します。これらの関数はすべて、コントロールの作成時に定義したとおりの、信頼性のある認証されたメッセージを送信できます。認証されたメッセージ関数は連続番号を返し、信頼性のあるメッセージ関数はゼロを返します。
sendRequest
関数は、応答サブジェクトへのメッセージをリスンし続けるリスナを作成します。このため、リスナの明示的な作成を必要としません。関数は応答の送信に使用できる TibrvMsg
のインスタンスを返します。
sendRequest
および sendReply
関数は、通常ペアで使用されます。以下は、このような実装の例です。
replymsg = sendRequest(msg, "send.Subject","reply.Subject",5.0);
sendReply( replyMsg, newMsg);
RVDTransport を介したメッセージ、または CMTransport を介したラベル付きメッセージの送信に使用されます。
public long sendMessage(TibrvMsg msg , String subject, double timeout)
RVDTransport を介した文字列メッセージ、または CMTransport を介したラベル付き文字列メッセージの送信に使用されます。
public long sendMessageAsString(String msg , String fieldName ,String subject, double timeout)
msg
: 送信する必要のある文字列メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
subject
: メッセージのサブジェクト
timeout
: メッセージ配信の時間制限
RVDTransport を介した XML メッセージ、または CMTransport を介したラベル付き XML メッセージの送信に使用されます。
public long sendMessageAsXML(XmlObject msg ,String fieldName ,String subject, double timeout)
msg
: 送信する必要のある XML メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
subject
: メッセージのサブジェクト
timeout
: メッセージ配信の時間制限
RVDTransport を介した要求メッセージ、または CMTransport を介したラベル付き要求メッセージの送信、応答の待機に使用されます。
public TibrvMsg sendRequest(TibrvMsg msg, String sendSubject, double timeout)
RVDTransport を介した要求文字列メッセージ、または CMTransport を介したラベル付き要求文字列メッセージを送信し、応答を待機するのに使用されます。
public TibrvMsg sendRequestAsString(String msg, String fieldName, String sendSubject, double timeout)
msg
: 送信する必要のある要求文字列メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
sendSubject
: メッセージのサブジェクト
timeout
: 応答のための待機時間
RVDTransport を介した要求 XML メッセージ、または CMTransport を介したラベル付き要求メッセージを送信し、応答を待機するのに使用されます。
public TibrvMsg sendRequestAsXML(XmlObject msg, String fieldName,String sendSubject, double timeout)
msg
: 送信する必要のある要求 XML メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
sendSubject
: メッセージのサブジェクト
timeout
: 応答のための待機時間
RVDTransport を介した応答、または CMTransport を介したラベル付き回答の送信に使用されます。
public long sendReply(TibrvMsg replyMsg, TibrvMsg sendMsg, double timeout)
RVDTransport を介した文字列型の応答、または CMTransport を介したラベル付き文字列型の応答の送信に使用されます。
public long sendReplyAsString(TibrvMsg replyMsg, String sendMsg, String fieldName, double timeout)
replyMsg
: 応答文字列メッセージ
sendMsg
: 要求文字列メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
timeout
: メッセージ配信の時間制限
RVDTransport を介して XML タイプ応答、または CMTransport を介したラベル付き XML タイプ応答の送信に使用されます。
public long sendReplyAsXML(TibrvMsg replyMsg, XmlObject sendMsg, String fieldName, double timeout)
replyMsg
: 応答 XML メッセージ
sendMsg
: 要求 XML メッセージ
fieldName
: ペイロードの送信に使用される TibRV フィールド名
timeout
: メッセージ配信の時間制限
Java Unicode 文字列とワイヤーフォーマット文字列の間の変換用の文字エンコーディングの設定に使用されます。
void setStringEncoding(java.lang.String encoding) throws java.io.UnsupportedEncodingException;
CMTransport を使用する際、以下の 2 つの関数を含むことができます。
メッセージの送信確認を受け取るコールバック メソッドを定義するために使用します。sendMessage
または sendReply
関数と共にしか使用できません。TIBCO RV コントロールは 2 つの確認報告、_RV.INFO.RVCM.DELIVERY.COMPLETE.>
および _RV.ERROR.RVCM.DELIVERY.FAILED.>
をサブスクライブします。
注意 : | 認証メッセージングが有効化された TIBCO RV コントロールは、onCMReceipt() メソッドがプロセス定義で実装されている必要があります。実装されていない場合は、実行時例外が送出されます。 |
public void onCMMessageReceipt(byte[] data);
予期されるリスナの事前登録に使用されます。送信アプリケーションがリスナを予め登録する際、Rendezvous は送付者の台帳のすべての発信メッセージを格納します。そのため、リスナは認証された配信を要求すると、バックログ メッセージを受け取ります。この関数は Rendezvous の addListener
メソッドと同じものです。詳細については、TIBCO Rendezvous 製品ドキュメントを参照してください。
void addListenerForCM(String cmName, String subject);
以下の例の手順では、ビジネス プロセスに TIBCO RV コントロールの sendMessage
関数を追加する方法について説明します。
sendMessage
関数のメッセージになります。 sendMessage
関数のフィールド名およびサブジェクト名を表します。 TibrvMsg
形式に変換します。以下のサンプル コードを参照してください。 // Generating a Tibrv message from the string data format
public void perform() throws Exception
{
com.tibco.tibrv.TibrvMsg tibrvMsg = new com.tibco.tibrv.TibrvMsg();
tibrvMsg.update(TibcoField,TibcoMessage);
}
sendMessage
関数をドラッグ アンド ドロップします。 sendMessage
関数ノードの [データの送信] タブを開きます。[割り当てる変数を選択します] ドロップダウン リストから、クライアント要求ノードの [データの受信] タブで作成した変数を、[コントロールが予期する値] カラムに表示されている sendMessage
関数の対応するパラメータに割り当てます。 sendMessage
関数ノードの [データの受信] タブを開きます。[割り当てる変数を選択します] ドロップダウン リストから、sendMessage
関数が出力する連続番号を格納する新しい変数を作成します。
sendMessageAsString
または sendMessageAsXML
関数を使用してメッセージを送信する場合も、同様の手順で行います。これらの関数が TibrvMsg 形式への変換を必要としないときには、上記の手順 9 は無視します。
メッセージを受信するには、TIBCO RV イベント ジェネレータ ユーティリティを使用します。詳細については、「TIBCO Rendezvous イベント ジェネレータ」を参照してください。
TIBCO RV コントロールのプロパティを実行時に動的に変更できます。変更できる TIBCO RV コントロールのプロパティは、TibRVDynamicPropertiesDocument
型のドキュメントで指定されています。このドキュメントは、TibRVSchemas.jar
ファイルで利用可能な TIBCO RV コントロールの動的なプロパティ スキーマに準拠します。
以下はプロパティを動的に変更する方法についてのサンプルです。
TibRVDynamicPropertiesDocument
型の変数を追加します。setXMLProperties
関数に続く) すべての TIBCO RV コントロールメッセージ送信処理を、TibRVControlDynamicPropertiesDocument
で指定したプロパティを使用して割り当てます。TibRVControlDynamicPropertiesDocument
を入力します。 <?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.bea.com/wli/control/TibRVControlDynamicProperties.xsd"
targetNamespace="http://www.bea.com/wli/control/TibRVControlDynamicProperties.xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="TibRVDynamicProperties">
<xs:complexType>
<xs:sequence>
<xs:element name="service" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="network" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="daemon" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="useCM" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
<xs:element name="cmName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ledgerName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="requestOld" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
<xs:element name="syncLedger" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
次に示すのは、TIBCO RV コントロール ドキュメントのサンプルです。実行時に、ビジネス プロセスを実行するときに、このドキュメントを提供する必要があります。
<tib:TibRVDynamicProperties>
<!--Optional:-->
<tib:service>7500</tib:service>
<!--Optional:-->
<tib:network>beaserv1</tib:network>
<!--Optional:-->
<tib:daemon>beaserv1:7500</tib:daemon>
<!--Optional:-->
<tib:useCM>true</tib:useCM>
<!--Optional:-->
<tib:cmName>cmname.runtime</tib:cmName>
<!--Optional:-->
<tib:ledgerName>c:/file.txt</tib:ledgerName>
<!--Optional:-->
<tib:requestOld>false</tib:requestOld>
<!--Optional:-->
<tib:syncLedger>false</tib:syncLedger>
</tib:TibRVDynamicProperties>