Business Components for Java受信アダプタ・クライアント・コードの生成

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

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

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

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

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

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

BC4JReceivingAdapterClientCode.java

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

Business Components for Java受信アダプタ・クライアント・コードの説明

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

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

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

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

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

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

例外のcatchブロック

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

Business Components for Java受信アダプタ・プロパティの定義

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

次に示すのは、Business Components for Java受信アダプタのサンプル・プロパティです。

BC4JReceivingAdapterClientCode-reciever.apf


<?xml version = '1.0' encoding = 'UTF-8'?>
<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>

次の表で、Business Components for Java受信アダプタの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。

関連項目

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

Business Components for Java受信アダプタ

独自のBusiness Components for Java受信アダプタ・クライアント・コードの作成

Business Components for Java受信アダプタのサブクラス化