Web Services Created with Previous Versions of the Denodo Platform¶
In the previous versions of the Denodo Platform, there was only one type of Web service, which combined the SOAP and REST representations. In the current version of the Platform, the Web services have been divided into two: the SOAP ones and the REST ones because the REST Web services have changed from an “operation-oriented” approach to a “RESTful” approach.
The Web services created with the previous versions of the Platform still work, but they are deprecated. This appendix explains how to manage the old Web services.
The Syntax of the CREATE SOAP WEBSERVICE statement shows the syntax for creating a new Web service that publishes a view or a stored procedure.
CREATE [ OR REPLACE ] WEBSERVICE <name:identifier>
CHUNKSIZE = <integer>
CHUNKTIMEOUT = <integer>
QUERYTIMEOUT = <integer>
POOLENABLED = <boolean>
POOLINITSIZE = <integer>
POOLMAXACTIVE = <integer>
I18N <name:identifier>
[ DATETYPEMAPPING { DATE | DATETIME } ]
[ NOWRAPARRAYS ] [ AUTHENTICATION ( HTTP <http_authentication> SOAP <soap_authentication> )
OUTPUT TYPE ( [
REST [ ( OPCONFIGS( <rest_xml_config> [, <rest_xml_config>]* ) )] | JSON [ ( OPCONFIGS( <rest_config> [, <rest_config>]* ) )]
| SOAP ( STYLE { DOCUMENT | RPC }
[ XSLT ( <xslt_config> [, <xslt_config> ]* ) ]
[ JMS (
VENDOR { ACTIVEMQ | WEBSPHEREMQ | JNDI }
DESTINATION = <name:literal>
[ REPLYTO = <name:literal> ]
{ QUEUE | TOPIC }
[ USER = <name:literal>
PASSWORD = <name:literal> [ ENCRYPTED ]
]
PROPERTIES ( <properties> [, <properties> ]* )
)
] )
| HTML [ ( CSS = <css:literal> ) ]
| RSS ( [ <rss mapping> ]*
[OPCONFIGS( <rest_config> [, <rest_config> ]* ] ) )
]+ )
[ <operation> ]+
[ FOLDER = <literal> ]
[ DESCRIPTION = <literal> ]
[ CASE_SENSITIVE = <boolean> ]
<http_authentication> ::= {
NONE
| BASIC <credentials>
| BASIC VDP [ VDPACCEPTEDUSERS <users_list> ]
| DIGEST <credentials>
}
<soap_authentication> ::= {
NONE
| BASIC <credentials>
| BASIC VDP [ VDPACCEPTEDUSERS <users_list:users_list> ]
| DIGEST <credentials>
| WSS BASIC <credentials>
| WSS BASIC VDP [ VDPACCEPTEDUSERS <users_list: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> | STOREDPROCEDURE }
<schema name:literal>
VQL = <literal>
INPUTS ( [ <inputparameter> ]* )
OUTPUT <returnparameter>
)
<inputparameter> ::=
<paramName:literal> <name in the view/query:literal>
[ : <paramType:literal> ] <operator:literal> [ OBL ]
[ ( <renamed field> ) ]
<returnparameter> ::=
<simpleType:literal>
| <regType:literal> : ARRAY OF ( <returnparameter_register> ) [ <renamed field> [, <renamed field> ]* ]
<returnparameter_register> ::=
<regName:literal> : REGISTER OF ( <registerfield> [, <registerfield>]* )
<registerfield> ::=
<fieldName:literal> [: <fieldType:literal>]
<renamed field> ::=
<XPath of the field:literal> = <displayed Name:literal>
<rss mapping> ::=
MAPPING { VIEW | STOREDPROCEDURE | WRAPPER }
<schemaName:literal> (
CHANNEL ( <mapping> [, <mapping> ]* )
ITEM ( <itemMapping> [, <itemMapping> ]* )
)
<xslt_config> ::=
OPERATION = <name:literal>
[ SOAPACTION = <action:literal> ]
[ INPUTXSLT = <xslt:literal> <isEnabled> ]
[ OUTPUTXSLT = <xslt:literal <isEnabled> ]
<isEnabled> ::=
ENABLED | DISABLED <rest_config> ::=
OPERATION = <name:literal>
CUSTOMURL = url:literal
<rest_xml_config> ::=
OPERATION = <name:literal>
[ CUSTOMURL = url:literal
CUSTOMNAMESPACE = ns:literal
<rest_xslt_config>
PRETTYOUTPUT
]+
<rest_xslt_config> ::=
[ INPUTXSLT = <xslt:literal> <isEnabled> ]
[ OUTPUTXSLT = <xslt:literal <isEnabled> ]
<properties> ::=
<key:literal> = <value:literal>
<mapping> ::=
<rss tag:literal> = <value:literal>
<item mapping> ::=
<rss tag:literal> = <field:identifier>
<wrapper type> ::=
ARN
| CUSTOM
| DF
| ESSBASE
| GS
| ITP
| JDBC
| JSON
| LDAP
| ODBC
| SALESFORCE
| SAPBWBAPI
| SAPERP
| WS
| XML
Below is a brief description of the use of the statement. A Web service
published by Virtual DataPort is formed by a list of operations defined
using the OPERATION
clause. Each operation will run a VQL statement
that is indicated in the VQL
property of the operation. The
operation may act on a view, a wrapper, a stored procedure or execute a
specific VQL statement (SCHEMA
property). The type of the statement
(TYPE
property) can be: select (most common), insert, update or
delete. Each operation contains a list of input parameters and one
output parameter. In the case of query operations, the output parameter
will be an array of registers containing the results of the query run.
Insert / update and delete operations return the number of tuples
affected by the operation.
The versions in which the service is to be published are indicated in
the OUTPUT_TYPE
clause. The I18N
parameter allows specifying the
internationalization configuration used by the service.
The parameters CHUNKSIZE
, CHUNKTIMEOUT
, QUERYTIMEOUT
,
POOLENABLED
, POOLINITSIZE
and POOLMAXACTIVE
control the
connection between the Web service and the Virtual DataPort server.
The section Connection Parameters explains the meaning of these parameters.
The clause NOWRAPARRAYS
modifies the SOAP output of the Web service
only if the value of the clause STYLE
is DOCUMENT
. If this
clause is present, the output of the SOAP Web service is simpler than if
it is not. However, the output is not backward compatible with the SOAP
Web services published from previous versions of the Denodo Platform. We
recommend adding it.
Having this clause in your CREATE WEBSERVICE
statement is equivalent
to clearing the Old SOAP DOCUMENT output check box of the Publish
Web service wizard.
The RSS format specifies a series of specific fields for each item.
Therefore, on exporting a view in RSS format, the correspondence between
the fields of the view and the fields in RSS format must be specified.
This is possible through the MAPPING
clause. An RSS feed contains
a channel
element that specifies general information on the feed.
The CHANNEL
parameter of the MAPPING
clause allows specifying
constant values for each of the channel
subelements permitted by the
RSS format. An RSS feed contains a list of item
elements. Virtual DataPort
will generate an item
element for each tuple returned by the query
made on the view or stored procedure used in the service. The ITEM
parameter of the MAPPING
clause allows selecting the attribute of
the view corresponding to each item
subelement defined in RSS
format. The RSS format specifies that at least one value must be
assigned either to the title
subelement or to the description
subelement.
The Web services published by Virtual DataPort can subscribe to a JMS
server to listen to SOAP messages (SOAP over Java Message Service).
To do that, add the parameter JMS
and its appropriate parameters.
The section Defining JMS Listeners explains the meaning of the
parameters related to establishing connections with JMS servers.
In an environment with existing SOAP/REST clients and services, we do
not need to modify those clients to work with Virtual DataPort Web
services. We can define XSLT stylesheets (XSL Transformations) to
transform the incoming SOAP or REST messages to adapt them to the format
that the new Web service expects. We also can define stylesheets to
transform the SOAP and REST responses before sending them to the
existing clients. To do this, use the parameter XSLT
.
For more information about this, read the section XSLT Transformations of the Administration Guide.
Add the clause CASE_SENSITIVE = true
if you want the input fields of
the REST version of the Web Service to be case sensitive. If false
(default value), the input parameters are case insensitive.
E.g. if the CASE_SENSITIVE = false
and the service has a parameter
called REGION, in the URL you can provide the parameter “REGION” or
“ReGiOn” and the service will return a response.