SOAP Web services implementation
The SOAP Web service implementation process is exactly the same as what was available through the GESAWE function in V6.
IMPORTANT
Generic SOAP Web services are based on the use of classic clients. That means calling Web services will consume legacy X3 objets and subprograms exactly like in V6.
A soapGeneric entity provides a description of the generic Web service.
The pools are defined in the SOAP classic pool administration function, managed by the Syracuse administration framework.
The size of each pool (number of channels) is no longer controlled by the license. This means customers can create as many channels as they want. Of course, server sizing considerations need to be taken into account to size the pool. The license controls only the size of data exchanges. (See Licensing control chapter).
Web services can work with the Syracuse load balancer mode.
A new property in the host definition entity allows you to define how many Web services dedicated processes should be set on a Syracuse environment (Number of Web service child). By default this property is set to 0, so it is necessary to configure it. Otherwise, each Web service call will generate the HTTP 500 error with the specific message No Web services accepted.
As explained in , the pool definition document, each pool configuration is duplicated for each host Web services child process.
The licensing system does not limit the number of clients defined on pool configuration. The SOAP Web service implementation performed in the administration platform controls the data volume consumed by third party application consumers (in and out).
The license parameter is defined in the following document.
Four variables are defined through the license: WSSIZELIMIT, WSPERIOD, WSGRACELIMIT and WSGRACESLOWDOWN:
All the operations listed (in Tester forms section of the generic SOAP Web service documentation) take several parameters.
CODECODE CODExml<callContext xsi:type="wss:CAdxCallContext"><codeLang xsi:type="xsd:string">FRA</codeLang><codeUser xsi:type="xsd:string"></codeUser><password xsi:type="xsd:string"></password><poolAlias xsi:type="xsd:string">SEED</poolAlias><poolId xsi:type="xsd:string"></poolId><requestConfig xsi:type="xsd:string"><![CDATA[adxwss.trace.on=on&adonix.trace.on=on&adonix.trace.level=3&adonix.trace.size=8&adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig></callContext>
CODECODE CODExml<publicName xsi:type="xsd:string">WSBPC</publicName>
They are the same as for V6. Please refer to V6 documentation.
As explained in Common SOAP parameters section, the poolId parameter allows you to force a specific client usage (this can be really useful when a developer wants to debug 4GL code putting breakpoints into Eclipse after he attached to a specific process ID --> the same as poolId).
If no poolId parameter is provided (OR the required client is not free, OR the required process ID doesn't exist), an algorithm selects consumers with free clients to be served following these rules:
Are there free clients ?y --> Are there clients with same language and same user ?y --> Select (set busy) and use one of these clients as is.n --> Are there clients with the same user only ?y --> Select (set busy) and use one of these clients, then change language set.n --> Are there clients with the same language only ?y --> Select (set busy) and use one of these clients, then change user set.n --> Select the first client from those available and change context (language and user).n --> wait for next free client (no context preferences (language and user) will be taken into account.Context change applies)
If the pool is not started (but max size is greater than 0) and no clients are available, any WS call will initialize a client automatically (until the number of created clients is the same as maximum size number).