SOAP Web サービスの作成¶
ビューを公開する SOAP Web サービスを作成するには、CREATE SOAP WEBSERVICE ステートメントを使用します。
注釈
このコマンドを使用すると、 Java ストアドプロシージャ または VQL ストアドプロシージャ を公開する SOAP Web サービスを作成できます。ただし、この機能は非推奨であり、Denodo Platform の今後のメジャーバージョンで削除される可能性があります。代わりに、プロシージャに対して選択ビューを作成し、このビューを Web サービスで公開します。
非推奨のすべての機能のリストについては、「 Denodo Platform 8.0 で非推奨となった機能 」のセクションを参照してください。
CREATE [ OR REPLACE ] SOAP WEBSERVICE <name:identifier>
CONNECTION (
CHUNKSIZE = <integer>
CHUNKTIMEOUT = <integer>
QUERYTIMEOUT = <integer>
POOLENABLED = <boolean>
POOLINITSIZE = <integer>
POOLMAXACTIVE = <integer>
)
I18N <name:identifier>
[ DATETYPEMAPPING { DATE | DATETIME } ]
[ NOWRAPARRAYS ]
[ RAISEFAULTONIDU ]
[ DONOTAPPLYOUTPUTXSLTTOERRORS ]
[ VERBOSEERRORS = <boolean> ] // Default value is true
[ AUTHENTICATION ( <authentication> ) ]
OUTPUT (
STYLE { DOCUMENT | RPC }
[ XSLT ( <XSLT configuration> [, <XSLT configuration> ]* ) ]
[ JMS (
VENDOR { ACTIVEMQ | WEBSPHEREMQ | JNDI }
DESTINATION = <name:literal>
[ REPLYTO = <name:literal> ]
{ QUEUE | TOPIC }
[ USER = <name:literal> PASSWORD = <name:literal> [ ENCRYPTED ] ]
PROPERTIES ( <properties> [, <properties> ]* )
)]
)
[ <operation> ]+
[ FOLDER = <literal> ]
[ DESCRIPTION = <literal> ]
CREATE [ OR REPLACE ] SOAP WEBSERVICE <name:identifier>
CONNECTION (
CHUNKSIZE = <integer>
CHUNKTIMEOUT = <integer>
QUERYTIMEOUT = <integer>
POOLENABLED = <boolean>
POOLINITSIZE = <integer>
POOLMAXACTIVE = <integer>
)
I18N <name:identifier>
[ DATETYPEMAPPING { DATE | DATETIME } ]
[ NOWRAPARRAYS ]
[ RAISEFAULTONIDU ]
[ DONOTAPPLYOUTPUTXSLTTOERRORS ]
[ VERBOSEERRORS = <boolean> ] // Default value is true
[ AUTHENTICATION ( <authentication> ) ]
OUTPUT (
STYLE { DOCUMENT | RPC }
[ XSLT ( <XSLT configuration> [, <XSLT configuration> ]* ) ]
[ JMS (
VENDOR { ACTIVEMQ | WEBSPHEREMQ | JNDI }
DESTINATION = <name:literal>
[ REPLYTO = <name:literal> ]
{ QUEUE | TOPIC }
[ USER = <name:literal> PASSWORD = <name:literal> [ ENCRYPTED ] ]
PROPERTIES ( <properties> [, <properties> ]* )
)]
)
[ <operation> ]+
[ FOLDER = <literal> ]
[ DESCRIPTION = <literal> ]
<authentication> ::=
BASIC <credentials>
| BASIC VDP [ VDPACCEPTEDUSERS <users_list> ]
| DIGEST <credentials>
| SPNEGO
| OAUTH2
| WSS BASIC <credentials>
| WSS BASIC VDP [ VDPACCEPTEDUSERS <users_list> ]
| WSS DIGEST <credentials>
<credentials> ::=
USER <user_name:literal> PASSWORD <password:literal> [ ENCRYPTED ]
<users_list> ::=
<user_name:literal> [, <user_name:literal> ]*
<operation> ::=
OPERATION <name:literal> (
TYPE { SELECT | INSERT | UPDATE | DELETE }
SCHEMA { VIEW | WRAPPER <wrapper type> | PROCEDURE }
<schema name:literal>
VQL = <literal>
INPUTS [ <input element name:literal> ] ( [ <input parameter> ]* )
OUTPUT <return parameter>
)
<input parameter> ::=
[ <input parameter type> ] <name:literal> <name in the view/query:literal>
[ : <type:literal> ] <operator:literal> [ OBL ]
[ ( <renamed field> ) ]
<input parameter type> ::=
ORDERBY
| OFFSET
| FETCH
<return parameter> ::=
<simple type:literal>
| <register type:literal> : ARRAY OF ( <return parameter register> )
[ <renamed field> [, <renamed field> ]* ]
<return parameter register> ::=
<name:literal> : REGISTER OF ( <register field> [, <register field> ]* )
<register field> ::=
<name:literal> [ : <type:literal> ]
<renamed field> ::=
<XPath of the field:literal> = <displayed Name:literal>
[ : [ <displayed array type name:literal> / ]
<displayed type name: literal> ]
<XSLT configuration> ::=
OPERATION = <name:literal>
[ SOAPACTION = <action:literal> ]
[ INPUTXSLT = <xslt:literal> <isEnabled> ]
[ OUTPUTXSLT = <xslt:literal <isEnabled> ]
<isEnabled> ::=
ENABLED
| DISABLED
<properties> ::=
<key:literal> = <value:literal>
<wrapper type> ::=
CUSTOM | DF | ESSBASE | ITP | JDBC | JSON
| LDAP | ODBC | OLAP | SALESFORCE | SAPBWBAPI | SAPERP | WS | XML }
Virtual DataPort によって公開される SOAP Web サービスは、 OPERATION
句を使用して定義された操作のリストによって構成されています。各操作は、それぞれの VQL
プロパティで指定されている VQL ステートメントを実行します。操作は、ビュー、ラッパー、ストアドプロシージャに対して動作するか、または特定の VQL ステートメントを実行します (SCHEMA
プロパティ)。ステートメントのタイプ (TYPE
プロパティ) は、 SELECT
(最も一般的)、 INSERT
、 UPDATE
、または DELETE
です。各操作には、入力パラメータのリストと 1 つの出力パラメータが含まれています。クエリ操作の出力パラメータは、クエリ実行の結果が格納されたレジスターの配列です。挿入/更新/削除操作は、操作によって影響を受けたタプルの数を返します。
CHUNKSIZE
、 CHUNKTIMEOUT
、 QUERYTIMEOUT
、 POOLENABLED
、 POOLINITSIZE
、および POOLMAXACTIVE
の各パラメータは、Web サービスが Virtual DataPort サーバーとの間で確立するコネクションを構成します (「 コネクションパラメータ 」を参照)。
I18N
パラメータは、サービスによって使用されるロケール構成を示します。
DATETYPEMAPPING
パラメータは、 date
型の値の形式を設定する方法を構成します。
DATE
の場合、Virtual DataPort サーバーは日、月、および年のみを出力します。DATETIME
の場合、時刻も含まれます。
サービスの認証設定は、 AUTHENTICATION
パラメータで制御します。
NOWRAPARRAYS
句は、 STYLE
句の値が DOCUMENT
の場合にのみ、Web サービスの SOAP 出力を変更します。この句が指定されている場合、SOAP Web サービスの出力は、指定されていない場合より単純になります。ただし、この出力は、Denodo Platform の Version 7 から公開される SOAP Web サービスとの下位互換性がありません。この句を追加することをお勧めします。この句を追加するのは、Administration Tool の [Publish SOAP Web service] ウィザードの [Old SOAP DOCUMENT output] チェックボックスをオフにするのと同じことです。
RAISEFAULTONIDU
句が指定されている場合、挿入、削除、または更新の操作が失敗すると Web サービスは SOAP 障害を発生させます。この句を追加するのは、Administration Tool の [Publish SOAP Web service] ウィザードの [Ignore faults on IDU operations] チェックボックスをオフにするのと同じことです。
SOAP Web サービスは、JMS サーバーをサブスクライブして、SOAP メッセージを利用することができます (SOAP over JMS)。これを行うには、 JMS
パラメータおよび適切なパラメータを追加します。JMS サーバーとのコネクションの確立に関連するパラメータの意味については、「 JMS リスナーの定義 」を参照してください。
既存の SOAP クライアントおよびサービスがある環境では、Virtual DataPort Web サービスで動作するようにこれらのクライアントを変更する必要はありません。XSLT スタイルシートを定義することによって、受信 SOAP メッセージを変換し、新しい Web サービスで必要な形式にそれらを適応させることができます。また、スタイルシートを定義して、SOAP 応答を変換してから既存のクライアントに送信することもできます。これを行うには、 XSLT
パラメータを使用します。
デフォルトでは、XSLT 変換はデータに適用されますが、Web サービスによって返されるエラーメッセージには適用されません。 DONOTAPPLYOUTPUTXSLTTOERRORS
句が指定されている場合に、XSLT 変換はエラーメッセージにも適用されます。
Web サービスによって詳細なエラーメッセージが返されないようにする場合は、 VERBOSEERRORS = false
句を追加します。この句を追加しないか、または true
に設定した場合、Web サービスは、操作の呼び出しでエラーが発生すると詳細なエラーメッセージを返します。メッセージには、問題が発生した箇所、たとえばデータソース接続時のタイムアウトやクエリ実行時のエラーなどが発生したかどうかが示されます。Web サービスのクライアントがこれらの詳細なメッセージを受け取らないようにする場合は、 VERBOSEERRORS = false
を追加します。
詳細については、管理ガイドの「 XSLT 変換 」を参照してください。
PRESERVE_OPERATIONS
句は、 CREATE OR REPLACE
操作でのみ使用できます。このトークンは、同名の Web サービスが存在する場合、その操作が保持され、操作名が競合する場合は置換されることを示します。
SOAP Web サービスの名前を変更するには、 RENAME
ステートメントを使用します。
RENAME WEBSERVICE <name:identifier> TO <new name:identifier>
RENAME WEBSERVICE customer360 TO ws_customer360;