SOAP Web サービスの作成

ビューとストアドプロシージャの一方または両方を公開する SOAP Web サービスを作成するには、CREATE SOAP WEBSERVICE ステートメントを使用します。

CREATE SOAP WEBSERVICE ステートメントの構文
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
  | 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 (最も一般的)、 INSERTUPDATE 、または DELETE です。各操作には、入力パラメーターのリストと 1 つの出力パラメーターが含まれています。クエリ操作の出力パラメーターは、クエリ実行の結果が格納されたレジスターの配列です。挿入/更新/削除操作は、操作によって影響を受けたタプルの数を返します。

CHUNKSIZECHUNKTIMEOUTQUERYTIMEOUTPOOLENABLEDPOOLINITSIZE 、および 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 ステートメントの構文
RENAME WEBSERVICE <name:identifier> TO <new name:identifier>
Web サービスの名前を「customer360」から「ws_customer360」に変更
RENAME WEBSERVICE customer360 TO ws_customer360;