ビジネス・コンポーネント受信アダプタ・クライアント・コードの生成

アクティビティ・モデラーでは、次のものが生成されます。

アクティビティ・モデラーによって生成されるクライアント・コードを使用するかわりに、独自のクライアント・コードおよびプロパティ・ファイルを作成できます。

アクティビティ・モデラーが生成するコード、およびプロパティ・ファイルの値は、「スイムレーン」プロパティ・ダイアログの「メッセージ・アダプタ」ページで選択したオプションに基づきます。 この場合、ビジネス・コンポーネント受信アダプタ・クライアント・コードを生成するには次のように選択します。

メッセージ・アダプタのフィールド
設定する値
受信アダプタを指定
チェックあり
トレース
チェックありまたはなし
方向
入力
タイプ
ビジネス・コンポーネント
ターゲット・クラス
有効なビジネス・コンポーネント・アプリケーション・モジュールの名前
スタイルシートURL
(オプション)XSL変換に使用するスタイルシートの絶対または相対URL
深さ
XMLデータをビュー・オブジェクトに格納するときに横断するビュー・リンクの深さ
サービスの存続期間
単一または複数
サブクラスの使用
サブクラス化されたビジネス・コンポーネント受信アダプタ・ファイルの完全修飾パスの選択および指定(サブクラス化されたビジネス・コンポーネント受信アダプタのクライアント・コードを生成する場合のみ)

注意: プロパティのダイアログによってコードに入力したコメントは、生成されたコードでは表示されません。

次に示すのは、ビジネス・コンポーネント受信アダプタ・クライアントのために生成されたJavaコードのサンプルです。

Business ComponentsReceivingAdapterClientCode.java


  public void receiveMessage()
  {
    try
    {
      Business ComponentsReceivingAdapter adapter = new Business ComponentsReceivingAdapter();
      adapter.receiveMessage(this);
    }
    catch(AdapterFailureException adapterExcept)
    {
      adapterExcept.printStackTrace();
    }
  }    

ビジネス・コンポーネント受信アダプタ・クライアント・コードの説明

次のセクションでは、生成されたコードの機能について説明します。

トレース・メソッドおよびデバッグ・メソッドのコール

receiveMessage()メソッドを使用して)アダプタを開始する前に、ジェネレータは、「メッセージ・アダプタ」ページの「トレース」チェック・ボックスの値に基づいて、デバッグ・トレース・メソッドのコールを挿入できます。デフォルトでは、このチェック・ボックスは選択されていません。 この場合、adapter.setShowTraceは省略されます。 つまり、デフォルトではトレースまたはデバッグのコメントが書き込まれません。前述のコード・サンプルは、「トレース」チェック・ボックスが選択されていない状態で生成されています。

チェック・ボックスが選択されていると、adapter.setShowTrace(true)がコードに生成され、トレースのコメントが使用可能になります。トレースのコメントが使用可能な場合は、デフォルトの出力ストリームはSystem.outです。 必要に応じ、java.io.PrintStreamオブジェクトのsetPrintStream()メソッドをコールして、生成されるファイルの出力ストリームを変更できます。たとえば、トレース・コメントをファイルに書き込むこともできます。

メッセージ受信メソッドのコール

初期化プロパティが一度設定されると、receiveMessage()メソッドを使用してアダプタが開始されます。アダプタをコールするたびに、アダプタは、指定のキューへのメッセージの到着を待機します。メッセージが届くと、デキューされて、関連するビュー・オブジェクトに組み込まれます。 serviceMultipleMessagesパラメータがtrue(「メッセージ・アダプタ」ページの「サービスの存続期間」「複数」)に設定されていると、アダプタは、存続しているかぎり、ループしてメッセージを処理し続けます。serviceMultipleMessagesfalse「サービスの存続期間」「単一」)に設定されていると、アダプタでは1つのメッセージを処理し、その後、制御はコール側のメソッドに戻ります。受信プロセス中になんらかの例外が発生すると、AdapterFailureExceptionがスローされ、制御がcatch句に戻ります。

例外のcatchブロック

ジェネレータでは、例外のためにcatchブロックが作成され、デバッグ・トレースのためにprintStackTrace()メソッドが組み込まれます。必要に応じて、getOriginalException().printStackTrace()文を追加して、元の例外を取得できます。

ビジネス・コンポーネント受信アダプタ・プロパティの定義

アクティビティ・モデラーを使用してビジネス・コンポーネント受信アダプタ・コードを生成すると、アダプタがOracle AQキューと通信するために必要なすべての情報を含むXMLプロパティ・ファイルも生成されます。 ファイルの名前は、<クラス名>-receiver.apfという形式になります。<クラス名>は、アダプタのためのadapter.receiveMessage()コールを含むクラスの名前です。アダプタでは、実行時にプロパティ・ファイルが使用され、このファイルは、<クラス名>.classアダプタ・ファイルと同じディレクトリに保存されます。 このビジネス・コンポーネント受信アダプタの例では、XMLプロパティ・ファイルの名前はBusiness ComponentsReceivingAdapterClientCode-receiver-apfになります。

次に示すのは、ビジネス・コンポーネント受信アダプタのサンプル・プロパティです。

Business ComponentsReceivingAdapterClientCode-reciever-apf

?xml version = '1.0' encoding = 'UTF-8'?>
<!DOCTYPE adapterProperties>
<?Oracle-JDeveloper Object2Dom = '1.0'?>
<adapterProperties>
   <agentName>AGENT1</agentName>
   <depthCount>0</depthCount>
   <jdbcDriver>oracle.jdbc.driver.OracleDriver</jdbcDriver>
   <jdbcURL>jdbc:oracle:thin:address:1521:address</jdbcURL>
   <queueName>widgetqueue</queueName>
   <queueSchemaName>queues</queueSchemaName>
   <queueSchemaPassword>queues</queueSchemaPassword>
   <stylesheetURL>http://localhost/stylesheet.xsl</stylesheetURL>
   <serviceMultipleMessages>false</serviceMultipleMessages>
</adapterProperties>    

次の表で、ビジネス・コンポーネント受信アダプタのXMLプロパティ・ファイルで使用されているプロパティについて説明します。

プロパティ 説明および例
depthcount oracle.jbo.ViewObjectreadXML()メソッドに渡すdepthcountパラメータの値。これはXMLデータをビュー・オブジェクトに格納するときに横断するビュー・リンクの深さです。
jdbcDriver 使用するJDBCドライバ・クラスの名前。この値はデータベース接続から導出されます。
jdbcURL メッセージのエンキュー先のOracle AQを含むスキーマのJDBC URL。この値はデータベース接続から導出されます。
queueSchemaName AQスキーマの名前。
queueSchemaPassword AQスキーマのパスワード。
queueName Oracle AQの名前。
agentName チャネル(つまりJMSエージェント)の名前。
serviceMultipleMessages アダプタが1つのメッセージを処理するか無限処理するかを決定するブール値で、trueは無限処理、falseは1つのメッセージを表します。
stylesheetURL オプション: XSL変換に使用するスタイルシートのURL。

関連項目

メッセージ・アダプタの基本

ビジネス・コンポーネント受信アダプタ

独自のビジネス・コンポーネント受信アダプタ・クライアント・コードの作成

ビジネス・コンポーネント受信アダプタのサブクラス化

 

 

Copyright © 1997, 2004, Oracle. All rights reserved.