HTTP または DISH サービス経由の既存の SOAP を変更します。
ALTER 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
ALTER 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 | *
ALTER SERVICE の句の説明は、CREATE SERVICE 文の場合と同じです。
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 クライアントは、この出力フォーマットを簡単に使用できます。
特定のフォーマットは、明示的なデータセットオブジェクトまたは SimpleDataset として WSDL 内で公開されます。どちらのデータセット表現も、各ローにカラムの配列が含まれているローの配列を表すデータ構造を示します。明示的なデータセットオブジェクトは、ロー内の各カラムに対応するパラメータ名とデータ型を提供することにより、結果セットの実際の形式を表す利点があります。一方、SimpleDataset はあらゆるタイプの無数のカラムが含まれているローを公開します。
FORMAT 'CONCRETE' EXPLICIT ON では、RESULT 句を定義するストアドプロシージャを Service 文で呼び出す必要があります。この条件が満たされる場合、SOAP サービスは名前がサービス名で始まり Dataset を付加した明示的なデータセットを公開します。
この条件が満たされない場合、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 ブラウザで表示されます。
認証が有効になっている (AUTHORIZATION ON:デフォルト) 場合には、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 変数とヘッダにアクセスする方法を参照してください。
ALTER SERVICE 文は、Web サービスの属性を変更します。
そのサービスの所有者であるか、または MANAGE ANY WEB SERVICE システム権限を持っている必要があります。
なし
SQL/2008 ベンダー拡張。
次の例は、ALTER SERVICE 文を使用して既存の Web サービスを無効にする方法を示します。
CREATE SERVICE WebServiceTable TYPE 'SOAP' AUTHORIZATION OFF USER DBA AS SELECT * FROM SYS.SYSTAB; ALTER SERVICE WebServiceTable DISABLE; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |