アクティビティ・モデラーでは、次のものが生成されます。
アクティビティ・モデラーによって生成されるクライアント・コードを使用するかわりに、独自のクライアント・コードおよびプロパティ・ファイルを作成できます。
アクティビティ・モデラーが生成するコード、およびプロパティ・ファイルの値は、「Swimlane」プロパティ・ダイアログの「メッセージ・アダプタ」ページで選択したオプションに基づきます。この場合、標準受信アダプタ・クライアント・コードを生成するには次のように選択します。
メッセージ・アダプタのフィールド
|
設定する値
|
---|---|
受信アダプタを指定
|
チェックあり
|
トレース
|
チェックありまたはなし
|
方向
|
入力
|
タイプ
|
標準
|
ターゲット・クラス
|
有効なJavaクラスの名前
|
スタイルシートURL
|
適用しない
|
深さ
|
適用しない
|
サービスの存続期間
|
適用しない
|
サブクラスの使用
|
適用しない
|
注意: プロパティのダイアログによってコードに入力したコメントは、生成されたコードでは表示されません。
次に示すのは、標準受信アダプタのために生成されたJavaコードのサンプルです。
public AdapterMessage receiveMessage() { AdapterMessage message = null; try { BasicReceivingAdapter adapter = new BasicReceivingAdapter(); message = adapter.receiveMessage(this); } catch(AdapterFailureException adapterExcept) { adapterExcept.printStackTrace(); } return message; }
次のセクションでは、生成されたクライアント・コードの機能について説明します。
(receiveMessage()メソッドを使用して)アダプタを開始する前に、ジェネレータは、「メッセージ・アダプタ」ページの「トレース」チェックボックスの値に基づいて、デバッグ・トレース・メソッドのコールを挿入できます。デフォルトでは、このチェックボックスはチェックされていません。この場合、adapter.setShowTraceメソッドは省略されます。つまり、デフォルトではトレースまたはデバッグのコメントは書き込まれません。前述のコード・サンプルは、「トレース」チェックボックスがチェックされていない状態で生成されています。
チェックボックスがチェックされていると、adapter.setShowTrace(true)がコードに生成され、トレースのコメントが使用可能になります。トレースのコメントが使用可能な場合は、デフォルトの出力ストリームはSystem.outです。必要に応じ、java.io.PrintStreamオブジェクトのsetPrintStream()メソッドをコールして、生成されるファイルの出力ストリームを変更できます。たとえば、トレース・コメントをファイルに書き込むこともできます。
初期化プロパティとトレース・メソッドやデバッグ・メソッドが一度設定されると、receiveMessage()メソッドを使用してアダプタが開始されます。このメソッドは、指定のキューのAdapterMessageオブジェクトをデキュー(または、必要に応じてオブジェクトの到着を待機)してから、制御をクライアント・コードに戻します。受信プロセス中になんらかの例外が発生すると、AdapterFailureExceptionがスローされ、制御がcatch句に戻ります。
アダプタにコールするたびに、1つのAdapterMessageオブジェクトがデキューされます。受信アダプタが開始したときにAdapterMessageオブジェクトがキューにあると、そのオブジェクトがすぐに返されます。キューにオブジェクトがないとき、受信アダプタは、オブジェクトが届くのを待ってからそのオブジェクトをデキューします。受信アダプタがハングしているように見える場合は、AdapterMessageオブジェクトがキューに届くのを待機しているときです。このメソッドが終了すると、JDBC接続も終了します。つまり、現在、複数のAdapterMessageオブジェクトを標準受信アダプタでデキューする場合は、生成されるファイルに独自のコードを追加してreceiveMessage()メソッドを反復処理できます。このとき、このメソッドを使用するたびに新しいJDBC接続を開始および終了します。
ジェネレータでは、例外のためにcatchブロックが作成され、デバッグ・トレースのためにprintStackTrace()メソッドが組み込まれます。必要に応じて、getOriginalException().printStackTrace()文を追加して、元の例外を取得できます。
アクティビティ・モデラーを使用して標準受信アダプタ・コードを生成すると、アダプタがOracle AQキューと通信するために必要なすべての情報を含むXMLプロパティ・ファイルも生成されます。ファイルの名前は、<クラス名>-receiver.apfという形式になります。<クラス名>は、アダプタのためのadapter.receiveMessage()コールを含むクラスの名前です。アダプタでは、実行時にプロパティ・ファイルが使用され、このファイルは、<クラス名>.classアダプタ・ファイルと同じディレクトリに保存されます。標準受信アダプタの場合、XMLプロパティ・ファイルの名前はBasicReceivingAdapterClientCode-receiver.apfになります。
次に示すのは、標準受信アダプタのサンプル・プロパティ・ファイルです。
BasicReceivingAdapterClientCode-receiver.apf
<?xml version = '1.0' encoding = 'UTF-8'?> <adapterProperties> <agentName>AGENT1</agentName> <jdbcDriver>oracle.jdbc.driver.OracleDriver</jdbcDriver> <jdbcURL>jdbc:oracle:thin:@ukp14096:1521:ukp14096</jdbcURL> <queueName>widgetqueue</queueName> <queueSchemaName>queues</queueSchemaName> <queueSchemaPassword>queues</queueSchemaPassword> </adapterProperties>
次の表で、標準受信アダプタのXMLプロパティ・ファイルで使用されているプロパティについて説明します。
プロパティ | 説明および例 |
---|---|
jdbcDriver | 使用するJDBCドライバ・クラスの名前。この値はデータベース接続から導出されます。 |
jdbcURL | メッセージのエンキュー先のOracle AQを含むスキーマのJDBC URL。この値はデータベース接続から導出されます。 |
queueSchemaName | AQスキーマの名前。 |
queueSchemaPassword | AQスキーマのパスワード。 |
queueName | Oracle AQの名前。 |
agentName | チャネル(つまりJMSエージェント)の名前。 |