Web サービスが Virtual DataPort サーバーに対してクエリを実行する方法¶
Web サービスは、リクエストを受信すると、SQL ステートメント (SELECT
、 INSERT
、 UPDATE
など) を実行します。このために、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 列を参照)。
Web サービスの資格情報を使用: Web サービスをデプロイするときに、Web サービスですべてのクエリを実行するために使用される資格情報を持つユーザーを管理者が選択します。それらのクエリを正常に実行するには、選択されたユーザーが、クエリを実行するための適切な権限を持っている必要があります。
サービスに必要な資格情報を持つユーザーを管理者が選択する手順については、「 [Web Service Container Status] テーブル 」を参照してください。
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 インストールガイド』の「 同時要求の最大数の増加 」を参照してください。