データベース内に作成および格納されている Web サービスが、有効な URL と実行する内容を定義します。単一のデータベースに複数の Web サービスを定義できます。異なるデータベースにある複数の Web サービスを、単一の Web サイトの一部として表示するように定義できます。
次の文は、Web サービスの作成、変更、削除を許可します。
CREATE SERVICE
ALTER SERVICE
DROP SERVICE
COMMENT ON SERVICE
CREATE SERVICE 文の一般的な構文は、次のとおりです。
CREATE SERVICE service-name TYPE 'service-type' [ attributes ] [ AS statement ]
サービス名がサービスへのアクセスに使用する URL の一部となるので、URI を構成する文字については柔軟性があります。標準的な英数字に加えて、- _ . ! * '( )
が使用できます。
また、DISH サービスの名前に使用されているもの以外のサービス名にはスラッシュ (/) を含めることができますが、この文字は標準の URL デリミタであり、SQL Anywhere による URL の解釈方法に影響するため、使用にはいくつかの制限があります。この文字はサービス名の先頭文字としては使えません。また、サービス名に 2 つのスラッシュを連続して使用することはできません。
サービス名の命名に使用できる文字はグループ名にも使用できます。これは、DISH サービスについてのみ該当します。
サポートされるサービス・タイプは次のとおりです。
'SOAP' 結果セットは、SOAP 応答として返されます。データのフォーマットは、FORMAT 句によって決定されます。SOAP サービスへの要求は、単純な HTTP 要求ではなく有効な SOAP 要求である必要があります。
'DISH' DISH サービス (SOAP ハンドラを決定) は、GROUP 句で識別される SOAP サービスのプロキシとして機能し、これらの各 SOAP サービスに対して WSDL (Web Services Description Language) ドキュメントを生成します。
'HTML' 文またはプロシージャの結果セットは、テーブルを格納する HTML ドキュメントに自動的にフォーマットされます。
'XML' 結果セットは XML として返されます。結果セットがすでに XML の場合、それ以上フォーマットは適用されません。XML 以外の場合は、自動的に XML としてフォーマットされます。効果は、SELECT 文で FOR XML RAW 句を使用した場合と同様です。
'JSON' 結果セットは JavaScript Object Notation (JSON) で返されます。JSON は XML よりもずっとコンパクトですが、構造が似ています。JSON の詳細については、 http://www.json.org を参照してください。
'RAW' 結果セットがフォーマットされずにクライアントに送られます。要求されたタグをプロシージャ内で明示的に生成することによって、フォーマットされた文書を作成できます。
すべてのサービス・タイプのうち、出力を制御しやすいのは RAW です。ただし、必要なタグをすべて明示的に出力しなければならないので必要な作業が増えます。XML サービスの出力は、サービスの文に FOR XML 句を適用することにより調節できます。SOAP サービスの出力は、CREATE SERVICE 文または ALTER SERVICE 文の FORMAT 属性を適用することにより調節できます。CREATE SERVICE 文を参照してください。
文とはコマンドのことであり、通常はストアド・プロシージャです。文は、ユーザがサービスにアクセスしたときに呼び出されます。特定の文を定義した場合、それがこのサービスで実行可能な唯一の文となります。文は SOAP サービスでは必須で、DISH サービスでは無視されます。デフォルトは NULL で、文がないことを示します。
文を含まないサービスを作成できます。文は URL から取得されます。このように設定されたサービスは、サービスをテストしたり、情報への一般的なアクセスが必要であったりする場合に便利です。文を含まないサービスを作成するには、文を完全に省略するか、文の箇所に AS NULL というフレーズを使用します。
文を持たないサービスでは、深刻なセキュリティ上の問題が発生します。なぜなら、Web クライアントによる任意のコマンドの実行が可能となるからです。そのようなサービスを作成した場合、認証を有効にし、有効なユーザ名とパスワードの入力をすべてのクライアントに要求してください。その場合でも、運用システムでは、文が定義されたサービスだけが実行されるようにしてください。
一般的に、すべての属性はオプションです。ただし、相互依存型のものもあります。使用可能な属性は、次のとおりです。
AUTHORIZATION この属性は、サービスを使用できるユーザを制御します。デフォルト設定は ON です。文がない場合、認証は ON にしてください。また、認証設定は、USER 属性で定義されたユーザ名の解釈方法に影響します。
SECURE ON に設定すると、安全な接続のみが許可されます。HTTP ポートが受信するすべての接続が自動的に HTTPS ポートにリダイレクトされます。デフォルトは OFF で、データベース・サーバを起動するときにこれらのポートが適切なオプションを使用して有効になっていれば、HTTP 要求と HTTPS 要求の両方が有効です。-xs サーバ・オプションを参照してください。
USER USER 句は、サービス要求を処理するのに使用できるデータベース・ユーザ・アカウントを制御します。ただし、この設定の解釈は、認証が ON か OFF かに依存します。
認証が ON に設定されている場合、すべてのクライアントは接続時に有効なユーザ名とパスワードを入力する必要があります。認証が ON の場合、USER オプションは NULL、データベース・ユーザ名、データベース・グループ名のいずれかです。NULL の場合、どのデータベース・ユーザも接続して要求できます。要求は、そのユーザのアカウントとパーミッションを使用して実行されます。グループ名が指定されている場合、グループに属するユーザのみが要求を実行できます。ほかのデータベース・ユーザはすべて、サービスを使用するためのパーミッションが拒否されます。
認証が OFF の場合は、文を指定する必要があります。また、ユーザ名も指定してください。そのユーザのアカウントとパーミッションを使用して、すべての要求が実行されます。したがって、サーバがパブリックなネットワークに接続されている場合、悪意のある使用によって受ける損害を抑えるために、指定されたユーザ・アカウントのパーミッションを最小限にしてください。
GROUP DISH サービスのみに適用する GROUP 句は、DISH サービスで公開される SOAP サービスを決定します。DISH サービスによって公開される SOAP サービスは、その DISH サービスのグループ名で始まる名前を持つもののみです。したがって、グループ名が、公開された SOAP サービスに共通するプレフィクスとなります。たとえば、GROUP xyz を指定すると、SOAP サービス xyz/aaaa、xyz/bbbb、または xyz/cccc のみ公開され、abc/aaaa または xyzaaaa は公開されません。グループ名が指定されていない場合、DISH サービスはデータベース内のすべての SOAP サービスを公開します。サービス名で使用できる文字と同じ文字をグループ名に使用できます。
SOAP サービスは、複数の DISH サービスによって公開される場合があります。具体的には、この機能によって、単一の SOAP サービスが複数のフォーマットでデータを提供することが可能になります。SOAP サービスで指定がないかぎり、サービス・タイプは DISH サービスから継承されます。したがって、フォーマット・タイプを宣言しない SOAP サービスを作成してから、それぞれ異なるフォーマットを指定する複数の DISH サービスに含めることができます。
FORMAT DISH サービスと SOAP サービスに適用する FORMAT 句は、SOAP または DISH の応答の出力フォーマットを制御します。.NET または JAX-WS など、さまざまな種類の SOAP クライアントと互換性のある出力フォーマットが使用可能です。SOAP サービスのフォーマットが指定されていない場合、フォーマットはサービスの DISH サービス宣言から継承されます。DISH サービスでもフォーマットが宣言されていない場合、デフォルトは、.NET クライアントと互換性のある DNET です。フォーマットを宣言しない SOAP サービスは、複数の DISH サービスを定義することにより、それぞれ異なる FORMAT タイプを持つさまざまな種類の SOAP クライアントで使用できます。
URL [PATH] URL 句または URL PATH 句は、URL の相互運用を制御し、XML、HTML、および RAW サービス・タイプのみ適用します。特に、URL パスを受け入れるか否か、また受け入れる場合はどのように処理するかを決定します。サービス名が文字 "/" で終了している場合は、URL を OFF に設定してください。CREATE SERVICE 文を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |