4GL Web Service Provider
Hydra4GL Version 4.31 and Lycia will support 4GL Web Service Provider (Server) Functionalilty.
Hydra4GL Version 4.31 and Lycia support 4GL Web Service Clients and Provider (Server) functionality. In general, any 4gl function can be made available for Web Services by applying small changes.
Web Service Framework and supported Application Servers:
Querix 4GL Web Services are based on the Apache Axis/2 framework and support following Application Servers:
- IBM Websphere
- BEA Weblogic
- Apache Tomcat
Following is a list of key features:
- Hot Deployment: Capable of deploying a Web Service while the application server is running
- Hot Update: Capable of updating a Web Service without stopping that Web Service
- Flexibility to choose any Application Server: Tomcat, Weblogic, Websphere, etc
- Flexible Web Service life cycle model: Application, Session, Request
- Supports synchronous and asynchronous call
- Supports WSDL 1.1, including SOAP and HTTP binding; SOAP 1.1/1.2
- Send attachments using SOAP Message Transmission Optimization Mechanism (MTOM).
- Supports REST
- Supports multiple data binding
- Able to configure Web Service outside application, in XML file
- Support for querying Web Service’s WSDL using ?wsdl, and Web Service’s schema using ?xsd

Publishing a 4GL function as a Web Service:
New language constructs allow the user to specify functions to be published as services
- Function WEB keyword identifies the function(s) to publish
- Function RETURNS clause allows the user to specify a rigid return value structure
Example:
WEB FUNCTION f1 (a ) RETURNS (b)
DEFINE a INTEGER
DEFINE b CHAR(10)
LET b = "Hello World"
RETURN b
END FUNCTION
- Functions declared as ‘WEB’ functions can still be used normally within 4GL applications
- The WEB keyword merely states that the function is to be exported when compiled as part of a Web Service package
- The RETURNS clause forces a function return signature
- All RETURN statements within the function will return data as described in the RETURNs clause
- When using a RETURNS clause, if a function has no RETURN statement, the function will return the values specified in the RETURNS clause
RETURNS Example 1
FUNCTION f1(a) RETURNS (a, b)
DEFINE a INTEGER
DEFINE b CHAR(10)
…
RETURN # returns a, b
…
RETURN 12 # returns 12, b
…
END FUNCTION
RETURNS Example 2
FUNCTION f2(a) RETURNS (b)
DEFINE a, b INTEGER
…
LET b = 10
END FUNCTION # RETURNS b ( = 10)
Web Service Deployment

- An Undeployed module is wrappered in a .qar archive.
- The utility WSDeploy deploys the service to the Axis2 Services container.
The WS Deploy utility performs a number of actions
- Extracts and copies the service archive to the application server’s service repository
- Extracts and copies the native interfaces to the user defined location on the system
- Notifies the application server to reload the service descriptions (if required)
