Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » サーバ管理要求 » サーバ管理要求によるコネクタの管理

 

コネクタのモニタ

コネクタの情報を取得するには、クライアント・ステータス要求という特別な種類のサーバ管理要求を作成します。これには <ClientStatusRequest> タグが含まれています。このタグでは、要求の登録に必要な情報を含む 1 つまたは複数の <request> タグを使用します。

クライアント・ステータス要求では、次のような複数の方法でコネクタに関するレポートを取得します。

  • ワンタイム要求を作成する。

  • コネクタのステータスが変更するたびにレポートが送信される状態変更リスナ (State Change Listener) を登録する。

  • コネクタでエラーが発生するたびにレポートが送信されるエラー・リスナを登録する。

レポートを特定の時刻や一定の間隔で送信するようにスケジュール設定することもできます。

ClientStatusRequest タグ

コネクタの情報を取得するには、<ClientStatusRequest> タグを使用します。

クライアント・ステータス要求は、要求の登録に必要なすべての情報を含む 1 つまたは複数の <request> タグから構成されています。

<ClientStatusRequest> タグのサブタグ 説明
<request> 要求内の情報をグループ化します。
クライアント・ステータス要求の <request> タグ

この要求により生成されるレポートごとに返信アドレスを指定するには、<request> タグ内で、オプションの <replyAddr> タグを使用します。このタグが指定されていない場合は、レポートのデフォルトの返信アドレスが送信メッセージの返信アドレスになります。

各レポートに含まれる要求のラベルを追加するには、オプションの <requestId> タグを使用します。複数の要求を登録する場合や、要求を削除または変更する場合は、特定の要求により生成されたレポートがどれであるかを、この ID で特定できます。

要求のコネクタのリストを指定するには、1 つまたは複数の <client> タグが含まれるようにします。タグごとにコネクタ・アドレスを 1 つ指定してください。ワンタイム要求の場合は、すべてのコネクタがレポートに含まれます。イベント・リスナ要求の場合は、サーバは各コネクタを受信します。

サーバのダウンタイムを通してイベントの詳細を永久的にするように指定するには、<persistent> タグを指定します。このタグにはデータを指定する必要はありません。<persistent/> または <persistent></persistent> のどちらのフォームを使用することもできます。

オプションで 1 つまたは複数の <onEvent> タグを含めて、イベントのリストを指定できます。<onEvent> タグごとにイベント・タイプを 1 つ指定してください。このタグの指定がない場合は、クライアント・ステータス要求でワンタイム要求が生成されます。それ以外の場合は、指定されたイベントのイベント・リスナが、クライアント・ステータス要求で登録されます。

クライアント・ステータス要求の <request> タグのサブタグ 説明
<client> 1 つまたは複数の <client> タグを含めることができます。タグごとにコネクタ・アドレスを 1 つ指定してください。ワンタイム要求の場合は、リストされているすべてのコネクタがレポートに含まれます。イベント・リスナ要求の場合は、サーバは各コネクタの受信を開始します。
<onEvent> 発生時にサーバにレポートを生成させるイベントを指定します。1 つまたは複数の <onEvent> タグを含めることができます。タグごとにイベント・タイプを 1 つ指定してください。<onEvent> タグが指定されていない場合は、クライアント・ステータス要求でワンタイム要求が生成されます。それ以外の場合は、指定されたイベントのイベント・リスナが、クライアント・ステータス要求で登録されます。
<persistent> このクライアント・ステータス要求の詳細情報をサーバ・データベース内で永続的にすることを指定します。
<replyAddr> この要求により生成される各レポートの返信アドレスを指定します。このタグが指定されていない場合は、レポートのデフォルトの返信アドレスが送信メッセージの返信アドレスになります。
<requestId> レポートのラベルです。この値は要求のラベルとして使用され、この要求により生成される各レポートに含まれます。複数の要求が登録されており、未処理の要求を削除または変更する場合には、特定の要求により生成されたレポートがどれであるかを、このラベルで特定できます。
<schedule> サーバ管理要求の親タグを参照してください。
ワンタイム・クライアント・ステータス要求

ワンタイム要求を作成するには、クライアント・ステータス要求から <onEvent> タグと <schedule> タグを除外します。このようにすると、クライアント・ステータス要求で指定された各コネクタについて、現在のステータス情報を含むレポートが 1 つ生成されます。

次の XML メッセージでは <onEvent> タグと <schedule> タグが除外されているので、これはワンタイム要求の例です。<ClientStatusRequest> タグで指定された各コネクタについて、現在のステータス情報を含むレポートが 1 つ生成されます。

<?xml version="1.0" encoding="UTF-8"?>
<actions>
 <ClientStatusRequest>
  <request>
   <replyAddr>ianywhere.connector.beajms\q11</replyAddr>
   <requestId>myOneTimeRequest</requestId>
   <client>ianywhere.server</client>
   <client>ianywhere.connector.beajms</client>
  </request>
 </ClientStatusRequest>
</actions>
イベント発生時のクライアント・ステータス要求

発生時に QAnywhere サーバにステータス・レポートを生成させるイベントを指定するには、クライアント・ステータス要求に 1 つまたは複数の <onEvent> タグが含まれるようにします。ワンタイム要求とは異なり、サーバは要求にすぐに応答しません。代わりにコネクタの受信を開始して、指定されたイベントが発生するまで待機します。いずれかのイベントがトリガされるたびに、イベントを発生させたコネクタの情報を含むレポートが送信されます。

次のイベントは、イベント発生時の要求で使用できます。

イベント 発生するタイミング
open 閉じられているコネクタが開かれたとき
close 開いていたコネクタ、または一時停止状態のコネクタが閉じられたとき
statusChange コネクタのステータスに変更があったとき。該当するステータスとして、オープンとクローズがあります。
error 予期しないエラーがコネクタからスローされたとき
fatalError 処理できない致命的なエラーがコネクタからスローされたとき
none このイベントが発生することはありません。これまでのイベント・ウォッチが、コネクタからすべて削除されます。

次の例では、サーバ・コネクタのステータスに変更があるたびに、またはサーバ・コネクタがエラーを生成するたびに、アドレスが ianywhere.connector.beajms\q11 のコネクタがステータス・レポートに送信されます。

<?xml version="1.0" encoding="UTF-8"?>
<actions>
 <ClientStatusRequest>
  <request>
   <replyAddr>ianywhere.connector.beajms\q11</replyAddr>
   <requestId>myEventRequest</requestId>
   <client>ianywhere.server</client>
   <onEvent>statusChange</onEvent>
   <onEvent>error</onEvent>
  </request>
 </ClientStatusRequest>
</actions>
複数の同時要求

サーバ・コネクタを含む任意の数のコネクタについて、返信アドレスごとに独自のイベント・リスナ・セットを指定できます。コネクタにイベント・リスナを追加しても、サーバの他のイベント・リスナが妨害されることはありません (ただし、置換中のイベント・リスナは妨害される可能性があります)。

要求の置換

イベント・リスナがすでに登録されているコネクタに対して、同じ返信アドレスでイベント・リスナを追加すると、古いリスナが新しいリスナで置換されます。たとえば、コネクタ abc の statusChange リスナがアドレス x/y に登録されている場合に、abc のエラー・リスナをアドレス x/y に登録すると、abc は statusChange イベントに応答しなくなります。

同じアドレスに複数のイベントを登録するには、複数の <onEvent> タグを使用して 1 つの要求を作成します。

要求の削除

コネクタのイベント・リスナがアドレスに登録されている場合は、"none" イベントを指定して同じアドレスから別のクライアント・ステータス要求を指定することで、イベント・リスナを削除できます。

次の例では、アドレス ianywhere.connector.beajms\q11 に登録されているサーバ・コネクタから、すべてのイベント・リスナが削除されます。

<?xml version="1.0" encoding="UTF-8"?>
<actions>
 <ClientStatusRequest>
  <request>
   <replyAddr>ianywhere.connector.beajms\q11</replyAddr>
   <client>ianywhere.server</client>
   <onEvent>none</onEvent>
  </request>
 </ClientStatusRequest>
</actions>
永続的なクライアント・ステータス要求

要求の詳細をメッセージ・ストアのグローバル・プロパティに保存するように指定し、サーバの再起動後に要求の詳細を自動的に回復できるようにするには、クライアント・ステータス要求に <persistent> タグが含まれるようにします。永続性の機能は、スケジュール設定されたイベントとイベント・リスナで使用できますが、ワンタイム要求では使用できません。永続的な要求を追加および削除するルールは、通常の要求のルールに類似しています。ただし、スケジュール設定されたイベントとイベント・リスナを別々に追加することはできません。代わりに、クライアントは永続的な要求を追加するときに、特定のコネクタ/返信アドレス・ペアのすべてのイベント・リスナとスケジュールを同じ要求に指定する必要があります。

次の例では、イベント・リスナとスケジュールを ianywhere.connector.myConnector に追加して、これらを永続的にします。また、このコネクタ/返信アドレス・ペアに永続的な要求が既存していた場合は、それらを上書きします。レポートは 30 分ごとに送信されます。コネクタのステータスに変化があった場合にも送信されます。

<?xml version="1.0" encoding="UTF-8"?>
<actions>
 <ClientStatusRequest>
  <request>
   <replyAddr>ianywhere.connector.beajms\q11</replyAddr>
   <client>ianywhere.connector.myConnector</client>
   <onEvent>statusChange</onEvent>
   <schedule>
    <everyminute>30</everyminute>
   </schedule>
   <persistent/>
  </request>
 </ClientStatusRequest>
</actions>
イベント・リスナの永続性

コネクタが自身のアドレスに登録したイベント・リスナは、コネクタが閉じられた場合でも、サーバが停止するまでサーバ上に存在します。コネクタが再び開かれた場合は、格納されているイベント・リスナがもう一度アクティブになります。

コネクタのステータス

コネクタのステータスは、次の 2 つのうちのいずれかになります。

  • 実行中   コネクタは着信と送信メッセージを受け入れて処理しています。このステータスの場合は、コネクタ・プロパティ ianywhere.connector.state が 1 になります。

  • 非実行中   コネクタは、着信と送信メッセージの受け入れと処理を行っていません。このステータスの場合は、コネクタ・プロパティ ianywhere.connector.state が 2 になります。コネクタのステータスが「実行中」に変わると、コネクタは初期化されます。

コネクタのステータスの変更方法については、コネクタの変更を参照してください。


クライアント・ステータス・レポート