Web サービスが Virtual DataPort サーバーに対してクエリを実行する方法

Web サービスは、リクエストを受信すると、SQL ステートメント (SELECTINSERTUPDATE など) を実行します。このために、Web サービスは他の Virtual DataPort クライアントと同じように動作します。つまり、特定の資格情報を使用して Virtual DataPort に接続し、受信したリクエストと等価なクエリを実行します。使用した資格情報に関連付けられているユーザーに適切な権限が付与されていない場合、このクエリは失敗する可能性があります。

SOAP Web サービス: ビューを SOAP Web サービスとしてデプロイする場合、このサービスにはデフォルトで以下の 4 つの操作が存在します。

  • getXXX: この操作が呼び出されると、サービスは SELECT ステートメントを実行します。

  • insertXXX: この操作が呼び出されると、サービスは INSERT ステートメントを実行します。

  • updateXXX: この操作が呼び出されると、サービスは UPDATE ステートメントを実行します。

  • deleteXXX: この操作が呼び出されると、サービスは DELETE ステートメントを実行します。

これらの操作の中に、どのクライアントにも実行させたくない操作がある場合、その操作を削除できます。

REST Web サービス: SOAP Web サービスとは異なり、REST Web サービスはビューを公開するもので、ビューに対して操作を行うものではありません、したがって、ビューを公開する場合、ビューに対して以下の操作を実行することを外部クライアントに許可することになります。

  • SELECT_NAVIGATIONAL ステートメント: サービスが GET リクエストを受信した場合に実行されます。

  • INSERT ステートメント: サービスが POST リクエストを受信した場合に実行されます。

  • UPDATE ステートメント: サービスが PUT リクエストを受信した場合に実行されます。

  • DELETE ステートメント: サービスが DELETE リクエストを受信した場合に実行されます。

Web サービスが Virtual DataPort に接続するために使用する資格情報は、選択されている認証方法によって異なります。それらは 2 つのカテゴリに分類されます (「 SOAP および REST Web サービスでサポートされている認証方法 」の最後の 2 列を参照)。

  1. Web サービスの資格情報を使用: Web サービスをデプロイする際に、管理者は、Web サービスがすべてのクエリを実行するために使用する資格情報を持つユーザーを選択します。クエリを正常に実行するには、選択されたユーザーが、クエリを実行するための適切な権限を持っている必要があります。

    サービスが使用するユーザーを管理者が選択する手順については、「 [Web Service Container Status] テーブル 」を参照してください。

  2. Web サービスのクライアントの資格情報を使用: クエリを正常に実行するには、Web サービスがユーザーに代わって実行するクエリを実行するための適切な権限を、Web サービスを呼び出すユーザーが持っている必要があります。

    たとえば、ユーザー bruce がサービスの操作を呼び出すと、サービスは bruce がリクエストで提供した資格情報を使用して Virtual DataPort に接続します。クエリは、 bruce に割り当てられている権限に応じて、実行される場合とされない場合があります。その後、ユーザー scott がサービスの同じ操作を呼び出した場合、サービスは scott が提供した資格情報を使用して Virtual DataPort に接続します。

Web サービスは JEE Web アプリケーションであり、 web.xml ファイルを含んでいます。「Web サービスの資格情報を使用」列の認証方法のいずれかを使用する Web サービスをデプロイするか、またはその WAR を生成すると、そのサービスをデプロイする際に選択したユーザーのユーザー名と暗号化されたパスワードが web.xml ファイルに格納されます。実行時に、サービスはそれらの資格情報を使用して Virtual DataPort に接続し、クエリを実行します。

これらのタイプの認証のいずれかを使用するサービスで、Web サービスをデプロイする際に選択したユーザーのパスワードを変更した場合、その Web サービスを再デプロイする必要があります。そうしないと、それ以降のこのサービスに対する呼び出しはすべて失敗します。なぜなら、サービスによって送信されるパスワードが正しくないからです。

Web サービスからサーバーへのコネクション

実行時に、REST および SOAP Web サービスは Virtual DataPort サーバーと 1 つまたは複数のコネクションを確立して、ビューに対してクエリを実行し、結果をクライアントに送信します。

これらのコネクションのパラメーターは構成可能です。最も重要なパラメーターは、コネクションプールの使用です。コネクションプールが有効な場合、Web サービスが開いた Virtual DataPort へのコネクションは再利用されます。本番環境では、コネクションプールを使用することを 強くお勧めします

コネクションの構成パラメーターを以下に示します。

  • Chunk Size (rows)Chunk timeout (milliseconds) 、および Query timeout (milliseconds): これらの意味は、他の VDP クライアントと同じです (『開発者ガイド』の「 JDBC 経由のアクセス 」を参照)。

  • Enable Pool: このチェックボックスをチェックすると、コネクションプールが有効になります。このオプションを有効にすることをお勧めします。

  • Initial number of connections: プールで開くコネクションの初期数。

  • Maximum number of active connections: プール内のコネクションの最大数。負の値は制限がないことを意味します。

いずれかの Web サービスが多数の同時リクエストを受信すると予想される場合、リクエストに対応するために、Tomcat が作成するスレッドの最大数を増やすことを検討してください。これを行うには、『Denodo Platform インストールガイド』の「 同時要求の最大数の増加 」を参照してください。