HTTP または DISH サービス経由の新しい SOAP を作成します。
CREATE SERVICE service-name TYPE 'SOAP' [ DATATYPE { ON | OFF | IN | OUT } ] [ FORMAT { 'DNET' | 'CONCRETE' [ EXPLICIT { ON | OFF } ] | 'XML' | NULL } ] [ common-attributes ] AS statement
common-attributes : [ AUTHORIZATION { ON | OFF } ] [ ENABLE | DISABLE ] [ METHODS 'method,...' ] [ SECURE { ON | OFF } ] [ USER { user-name | NULL } ]
method : DEFAULT | POST | HEAD | NONE
CREATE SERVICE service-name TYPE 'DISH' [ GROUP { group-name | NULL } ] [ FORMAT { 'DNET' | 'CONCRETE' [ EXPLICIT { ON | OFF } ] | 'XML' | NULL } ] [ common-attributes ]
common-attributes: [ AUTHORIZATION { ON | OFF } ] [ ENABLE | DISABLE ] [ METHODS 'method,...' ] [ SECURE { ON | OFF } ] [ USER { user-name | NULL } ]
method : DEFAULT | POST | GET | HEAD | NONE | *
service-name Web サービス名に使用できるのは、任意の順序の英数字文字、またはスラッシュ (/)、ハイフン (-)、アンダースコア (_)、ピリオド (.)、感嘆符 (!)、チルダ (~)、アスタリスク (*) 、アポストロフィ (')、左カッコ (()、右カッコ ()) です。ただし、スラッシュ (/) は、サービス名の先頭または最後の文字には使用できず、2 つ以上連続 (// など) して使用することもできません。
他のサービスとは異なり、スラッシュ (/) は、DISH サービス名のどこにも使用できません。
サービス root に名前を付けることができますが、この名前には特別な機能があります。
TYPE 句 各サービスが特定の応答フォーマットを定義する、サービスタイプを識別します。リストされたサービスタイプのいずれかを指定します。デフォルト値はありません。
'SOAP'
結果セットは、SOAP エンベロープと呼ばれる XML ペイロードとして返されます。FORMAT 句を使用すると、データのフォーマットをさらに絞り込むことができます。SOAP サービスへの要求は、単なる汎用 HTTP 要求ではなく有効な SOAP
要求である必要があります。SOAP 標準の詳細については、 http://www.w3.org/TR/2000/NOTE-SOAP-20000508/を参照してください。
'DISH' DISH サービス (SOAP ハンドラーを決定) は、GROUP コンテキスト内で SOAP サービスを参照する SOAP 終了ポイントです。また、SOAP クライアントツールキットで使用するために WSDL (Web Services Description Language) を生成することにより、SOAP サービスに対してインターフェイスも公開します。
GROUP 句 GROUP 句が指定されていない DISH サービスは、データベース内で定義されているすべての SOAP サービスを公開します。慣例により、SOAP サービス名は、GROUP 要素と NAME 要素で構成できます。最後のスラッシュ文字によって、名前がグループから区切られます。たとえば、'aaa/bbb/ccc' と定義されている SOAP サービス名は 'ccc' であり、グループは 'aaa/bbb' です。この方法で DISH サービスを区切るのは、無効です。代わりに、SOAP 終了ポイントとなる SOAP サービスのグループを指定するために、GROUP 句が適用されます。
有効な XML を生成するため、WSDL ではスラッシュがアンダースコアに変換されます。GROUP 句が指定されていない DISH サービスでは、スラッシュを含む可能性のあるすべての SOAP サービスが公開されるため、このような DISH サービスを使用する場合には注意してください。アンダースコアを含む SOAP サービス名とグループを一緒に使用する場合は、あいまいにならないように注意してください。
DATATYPE 句 SOAP サービスにだけ適用されます。DATATYPE OFF が指定されていると、SOAP の入力パラメーターと応答データは XMLSchema 文字列型として定義されます。ほとんどの場合、実際のデータ型を使用すると、SOAP クライアントで計算を行う前にデータをキャストする必要がなくなるため、この方法をおすすめします。パラメーターのデータ型は、DISH サービスが生成する WSDL のスキーマセクションで公開されます。出力データ型は、データのカラムごとに XML スキーマ型の属性として表されます。
DATATYPE 句に指定できる値を次に示します。
ON 入力パラメーターと結果セットの応答のデータ型指定を生成します。
OFF すべての入力パラメーターと応答のデータ型は、XMLSchema 文字列 (デフォルト) になります。
IN 入力パラメーターに対してのみ実際のデータ型を生成します。応答のデータ型は XMLSchema 文字列になります。
OUT 応答に対してのみ実際のデータ型を生成します。入力パラメーターは XMLSchema 文字列になります。
SOAP サービスの詳細については、チュートリアル:SQL Anywhere を使用した SOAP/DISH サービスへのアクセスを参照してください。
XMLSchema 型と SQL データ型とのマッピングの詳細については、SOAP のデータ型を参照してください。
FORMAT 句 この句は、SOAP クライアントアプリケーションに応答を送信するときの出力フォーマットを指定します。
SOAP サービスフォーマットが SOAP サービスで指定されていない場合は、関連する DISH サービスフォーマットによって指定されます。デフォルトのフォーマットは DNET です。
SOAP サービスのグループにフォーマットルールを活用するには、SOAP 要求を DISH サービス (SQL Anywhere SOAP 終了ポイント) に指示してください (SOAP 操作)。SOAP サービスの FORMAT 指定は、DISH サービスの指定よりも優先されます。DISH サービスのフォーマット指定は、SOAP サービスで FORMAT 句が定義されていない場合に使用されます。どちらのサービスにも FORMAT が指定されていない場合のデフォルトは 'DNET' です。
次のフォーマットがサポートされます。
'DNET' .NET クライアントアプリケーションで使用するために、互換性のある System.Data.DataSet フォーマットで出力されます (デフォルト)。
'CONCRETE' この出力フォーマットは、ローとカラムのオブジェクトの配列を表すインターフェイスを生成できるが、DNET フォーマットを使用できないクライアント SOAP ツールキットをサポートするために使用されます。Java クライアントおよび .NET クライアントは、この出力フォーマットを簡単に使用できます。
DISH サービスの WSDL では、特定の出力フォーマットが公開されます。CONCRETE OFF または最後の手段として、1 つ以上の SOAP サービスの CONCRETE フォーマットが SimpleDataset で示されます。WSDL を調べると、任意の数のカラムの配列で構成されるローの配列で、SimpleDataset が構成されていることがわかります。特定のカラム名およびデータ型は指定されていないため、この表現方法は理想的ではありません。SOAP サービスで、順に RESULT 句を定義するストアドプロシージャーを呼び出すことをお勧めします。このようにして定義された SOAP サービスを公開する DISH サービスは、WSDL を生成するときに結果セットを完全に記述します。
デフォルトでは、EXPLICIT ON が使用され、SOAP サービスの結果セットが記述できる場合は、SOAP サービスごとに特定の Dataset エントリが WSDL に含まれます。各エントリ名の先頭には、SOAP サービス名とアンダースコアが付けられます。たとえば、test という名前の SOAP サービスは、各カラム要素の XMLSchema 定義が含まれた test_Dataset オブジェクト指定を生成します。
EXPLICIT ON が指定されている場合 (デフォルト)、次の条件が満たされると、WSDL は明示的な DataSet 要素を記述します。
CREATE SERVICE 文がストアドプロシージャーを呼び出している
カラムとデータ型を記述する RESULT 句がストアドプロシージャーで指定されている
EXPLICIT OFF が指定されている場合、WSDL は SimpleDataset 要素を記述します。この説明では、カラム数、カラム名またはデータ型は提供されません。
'XML' 出力は XMLSchema 文字列フォーマットで生成されます。応答としての XML ドキュメントでは、カラムデータを抽出するために SOAP クライアントでさらに処理が必要です。このフォーマットは、ローおよびカラムの配列を表す中間インターフェイスオブジェクトを生成できない SOAP クライアントに適しています。
NULL NULL タイプを指定すると、SOAP サービスまたは DISH サービスでデフォルトの動作が使用されます。ALTER SERVICE 文で NULL タイプを使用すると、既存のサービスのフォーマットタイプが上書きされます。
AUTHORIZATION 句 サービスに接続するときに、ユーザーが基本的な HTTP 認証を通じてユーザー名とパスワードを指定する必要があるかどうかを決定します。デフォルト値は ON です。AUTHORIZATION が OFF の場合、SOAP サービスに AS 句が必要となり、USER 句でユーザーを指定する必要があります。そのユーザーのアカウントとパーミッションを使用して、すべての要求が実行されます。AUTHORIZATION が ON の場合、すべてのユーザーはユーザー名とパスワードを指定する必要があります。オプションとして、USER 句でユーザー名またはグループ名を指定することにより、サービスを使用できるユーザーを制限することもできます。ユーザー名が NULL の場合、既知のユーザーはすべてサービスにアクセスできます。AUTHORIZATION 句を使用すると、Web サービスでデータベース認証とパーミッションを使用して、データベース内のデータへのアクセスを制御できます。
authorization の値が ON の場合、Web サービスに接続しようとしている HTTP クライアントは、基本認証 (RFC 2617) を使用します。基本認証では、ユーザーとパスワードの情報が base-64 エンコーディングを使用して難読化されます。セキュリティを強化するため、HTTPS プロトコルを使用することをおすすめします。
ENABLE 句と DISABLE 句
サービスを使用できるかどうかを指定します。デフォルトでは、サービスの作成時に有効にされます。サービスを作成または変更するときに、ENABLE 句または DISABLE 句を含めることができます。サービスを無効にすると、事実上、サービスがオフラインになります。無効にしたサービスは、後で
ENABLE 句を含む ALTER SERVICE 文を使用して有効にできます。無効にされたサービスに対して HTTP 要求を行うと、通常、404 Not Found
HTTP ステータスが返されます。
METHODS 句 サービスでサポートされている HTTP メソッドを指定します。有効な値は、DEFAULT、POST、GET、HEAD、NONE です。POST、GET、HEAD メソッドを表す省略形として、アスタリスク (*) を使用できます。SOAP サービスのデフォルトのメソッドタイプは、POST と HEAD です。DISH サービスのデフォルトのメソッドタイプは、GET、POST、および HEAD です。すべての HTTP メソッドがすべてのサービスタイプに有効なわけではありません。次の表は、各サービスタイプに適用できる有効な HTTP メソッドの概要を示します。
メソッド値 | 適用対象のサービス | 説明 |
---|---|---|
DEFAULT | 両方 | DEFAULT は、指定されたサービスタイプのデフォルトの HTTP メソッドのセットをリセットする場合に使用します。他のメソッド値が存在するリストに含めることはできません。 |
POST | 両方 | SOAP ではデフォルトで有効になります。 |
GET | DISH のみ | DISH ではデフォルトで有効になります。 |
HEAD | 両方 | SOAP と DISH でデフォルトで有効になります。 |
NONE | 両方 |
NONE は、サービスへのアクセスを無効にするために使用します。SOAP サービスに適用すると、SOAP 要求がそのサービスに直接アクセスできなくなります。このため、DISH サービスの SOAP 終了ポイント経由で SOAP 操作にアクセスします。 各 SOAP サービスに METHOD NONE を指定することをおすすめします。 |
* | DISH のみ | 'POST,GET,HEAD' と指定することと同じです。 |
たとえば、次のいずれかの句を使用して、サービスですべての HTTP を介した SOAP メソッドタイプがサポートされていることを指定できます。
METHODS 'POST,HEAD' |
サービスタイプに対する要求タイプのリストをデフォルトにリセットするには、次の句を使用できます。
METHODS 'DEFAULT' |
SECURE 句 セキュアリスナーまたは非セキュアリスナーでサービスにアクセスできるかどうかを指定します。ON は、HTTPS 接続のみが受け入れられ、HTTP ポートが受信する接続は HTTPS ポートに自動的にリダイレクトされることを示します。OFF は、Web サーバーの起動時に必要なポートが指定されていると、HTTP 接続と HTTPS 接続の両方が受け入れられることを示します。デフォルト値は OFF です。
USER 句
Web サービス要求を実行するパーミッションを持つデータベースユーザーまたはユーザーのグループを指定します。サービスが AUTHORIZATION OFF で設定されている場合は、USER 句を指定する必要があり、AUTHORIZATION ON
で指定する必要があります (デフォルト)。認証を必要とするサービスに対して HTTP 要求を行うと、401 Authorization Required
HTTP 応答ステータスになります。この応答に基づいて、ユーザー ID とパスワードを要求するプロンプトが Web ブラウザーで表示されます。
認証が有効になっている場合 (デフォルト) には、USER 句を指定することを強くおすすめします。指定しないと、すべてのユーザーが認証されます。
USER 句は、サービス要求を処理するのに使用できるデータベースユーザーアカウントを制御します。データベースのアクセスパーミッションは、サービスのユーザーに割り当てられた権限に制限されます。
statement サービスにアクセスしたときに起動する、ストアドプロシージャー呼び出しなどのコマンドを指定します。
DISH サービスは、NULL 文または文のいずれかを指定する必要がある唯一のサービスです。SOAP サービスで分を定義する必要があります。他のサービスが NULL 文を持つ場合もありますが、AUTHORIZATION ON で設定した場合だけです。
statement なしの DISH 以外のサービスに対する HTTP 要求により、URL 内で実行する SQL 式が指定されます。認証が必要ですが、この機能はサーバーを SQL の挿入に対して脆弱にするため、実稼動システムでは使用しないでください。サービス内で文が定義されると、指定された SQL 文はサービスによって実行できる文のみとなります。
通常の Web サービスアプリケーションでは、statement を使用して関数またはプロシージャーを呼び出します。ホスト変数をパラメーターとして渡して、クライアント提供の HTTP 変数にアクセスできます。
次の statement は、AuthenticateUser という名前のプロシージャーに 2 つのホスト変数を渡すプロシージャー コールを示しています。この呼び出しは Web クライアントが user_name および user_password 変数を供給することを仮定しています。
CALL AuthenticateUser ( :user_name, :user_password ); |
関数またはプロシージャーに渡すホスト変数の詳細については、クライアント提供の HTTP 変数とヘッダーのアクセスを参照してください。
サービス定義は、ISYSWEBSERVICE テーブルに格納され、SYSWEBSERVICE ビューから検査できます。
DBA 権限。
なし
SQL/2008 ベンダー拡張。
Transact-SQL CREATE SERVICE は、SOAP タイプに関してのみ Adaptive Server Enterprise でサポートされています。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |