Back to Contents


New Features

Topics


FGLGWS 2.32

4GL callback functions to trap high-level server side web services calls

The COM library enables to intercept high-level web services operation on server side. You can now define three 4GL functions via the following methods of the web service class. They will be executed at different steps of a web service request processing in order to modify the SOAP request, response or the generated WSDL document before or after the SOAP engine has processed it.
This helps for instance to handle WS-* specifications not supported in the web service API.

Notice that all three kinds of 4GL callback function must conform to following prototype

See Web Service Class for additional information.


FGLGWS 2.21

Support of HTTPS in fglwsdl tool

The fglwsdl tool supports HTTPS request to retrieve WSDL or XSD on the network.

You must specify the X509 certificate and private key using the following options:

See The fglwsdl tool (WSDL and XSD) for more information.

Support of authentication in fglwsdl tool

The fglwsdl tool allows http authentication and proxy authentication when requesting a WSDL or an XSD on the network, and supports basic and digest authentication.

The following two options have been added for authentication:

See The fglwsdl tool (WSDL and XSD) for more information.

Client stub based on the DOM API and using callback functions

The fglwsdl tool provides a new option that generates:

This option is especially useful when you have to communicate with another web service that requires additional information on the XML request, or when it returns additional information that was not specified in the WSDL. For instance, this is the case if you have to communicate with web services using WS-Security. You can manipulate the XML document in the generated client stub using the XML-Signature or XML-Encryption API to perform the security part by hand before it is sent on the network.

The following option has been added for that purpose:

See The fglwsdl tool (WSDL and XSD) for more information.

Mixing low-level and high-level services

The COM library is enhanced by a new function called HandleRequest to allow low-level and high-level web services on the same server.

See The WebServiceEngine Class for more information.

Automatic HTTP GET request reply

The COM library is enhanced to perform automatic reply on HTTP GET request when the server requires HTTP authentication, proxy authentication, or returns an HTTP redirect.

See method setAutoReply of the HTTPRequest class for more information.

Option to serialize BDL date and datetime in UTC format

The XML library supports a new option to serialize any BDL DATE and DATETIME using the UTC format requested in most WS-Security exchanges.

See option xml_useutctime of the Serializer class for more information.

Support for key derivation

Due to security issues, the usage of a direct shared symmetric or HMAC key is not recommended; most secured operations should use a key derived from a common shared key instead. The XML library has been enhanced with two APIs in the CryptoKey class:

See Derived keys for more details.

Digest computation and random string generation

In most Web Service security exchanges, the application must be able to compute digest passwords and use random binary data to detect reply attacks (for instance). The COM library has therefore been enhanced with two helper APIs in a new Util class:

See the Util class for more details.

Support of TEXT stream in the StAX API

The StAX reader and writer classes have been enhanced with two new methods to set up the XML stream on a TEXT lob. It enables parsing of an XML document in StAX directly from a TEXT with the readFromText() method, and creating a new XML document saved directly as TEXT with the writeToText() method.

See Genero Web Services XML Library for information about the various classes.

Support of XML wildcard attributes

The Genero Web Services library has been enhanced to support XML wildcard attributes. Such wildcard attribute can be set in a XML schema or in a WSDL via the anyAttribute tag. It allows additional attributes belonging to other XML schemas in a main XML schema. The additional attributes are not necessarily known by the main schema.

The fglwsdl tool has been enhanced to recognize the additional attribute and to generate a one-dimensional dynamic array with a new XMLAnyAttribute attribute, and the XML Serializer has been enhanced to handle the new XMLAnyAttribute during the serialization and de-serialization process.

A new option called xs_processcontents is supported by the XML Serializer to generate the XML schema of such wildcard attributes with a processContents tag that defines the way a validator will handle them.

See XMLAnyAttribute for more details about wildcard attributes, and the XML Serializer options for details about the xs_processcontents.

Full operational XML-Encryption demo

The package contains a new demo called SimplePKI that demonstrates the usage of XML-Encryption in Genero. It allows several clients to register to a centralized PKI (Public Key Infrastructure) service that generates a unique RSA key-pair per user. The private key is returned to the user during the registration or login, using a derived symmetric key based on the user's password to make it secure. Then any client is able to retrieve the public key of the registered users, and to encrypt XML data only readable by that user.

Note: This demo could easily be adapted in a real-world application if (for instance) all key-pair are stored in a database for persistence.

You can find the demo in the demo/WebServices/simplepki subdirectory or by running the demo application in your installation directory.

Back to the top


FGLGWS 2.20

XML-Signature and XML-Encryption

The Genero Web Services XML Library has been improved to support the XML-Signature and XML-Encryption specifications defined by the W3C (also known as XML-Security). The library enables 4GL applications to handle public, private, symmetric or hmac keys and X509 certificates in order to sign XML documents or document fragments, and verify a XML signature against a certificate or key. It also enables the applications to encrypt XML nodes using symmetric keys, and decrypt them back using DOM manipulation. Combined with the COM library, any 4GL application can now exchange any XML documents over the Internet in a completely secured manner.

The library provides classes for:

See Genero Web Services XML Library for information about the various classes and methods for handling XML signature and encryption.

String encryption and decryption

The Genero Web Services XML library also provides APIs to encrypt and decrypt strings with symmetric or RSA public/private keys. These APIs can be used to encrypt/decrypt passwords directly in 4GL applications.

See the Genero XML Security APIs and the fglpass tool for more information.

Support of BOOLEAN, TINYINT and BIGINT

The Genero Web Services provides support for the new BOOLEAN, TINYINT and BIGINT data types. You can use them when writing your web service or to customize your 4GL records for XML serialization. The fglwsdl tool has been enhanced to generate these new data types automatically when encountered in WSDL files or XML schemas.

Note: For compatibility issues, the fglwsdl tool allows code generation without these new data types by using the option '-legacyTypes'.

See the XML to 4GL data type mapping and the fglwsdl tool for more information.

Back to the top


FGLGWS 2.11.04

One-Way RPC and Document style services

The Genero Web Services library provides two new methods in the WebOperation class to create One-Way operations in services. A One-Way operation means that the server accepts an incoming request, but doesn't return any response back to the client. There is one method called CreateOneWayRPCStyle to create an RPC Style operation, and another one called CreateOneWayDOCStyle to create a Document Style operation. For instance, a One-Way operation can be used as a logger service, where a client sends a message to the server, but doesn't care about what the server is doing with it.

See WebOperation for information about these two methods.

New options in fglwsdl tool

The fglwsdl tool was enhanced with the following new options :

The following options have been changed as described below :

See fglwsdl for more information.

Support of WSDL with circular references

The Genero Web Services library has been enhanced to support WSDL with circular references. Actually, the 4GL language doesn't provide a way to define variables or types that refer to themselves. However,  to provide better interoperability and a way to handle such circular data, the fglwsdl tool now generates variables or types of xml.DomDocument type when circular references are detected during the processing of WSDL files. This gives the user the ability to manipulate the circular data by hand, using the XML DOM API.

See Genero Web Services XML Library for information about the various classes and methods for handling XML documents.

Version 2.11

Server low-level XML and TEXT over HTTP communication (com)

The Genero Web Services com library provides one more class, HTTPServiceRequest, to perform low-level XML and TEXT over HTTP communication on the server side. This allows communication at a very low-level layer, to write your own type of web services.

See HTTPServiceRequest for information about how to write an HTTP server.

XML facet constraints attributes

The Genero Web Services xml library provides 12 new XML attributes to map to simple 4GL variables. These attributes restrict the acceptable value-space for each variable in different ways such as:

See Constraints between simple 4GL and XML datatypes for more details.

Enhancement of the fglwsdl tool with three new options

The fglwsdl tool was enhanced with the following three new options :

See fglwsdl for more information.

Back to the top


Version 2.10

Genero XML library (xml)

This library provides classes and methods to perform:

See Genero Web Services XML Library for information about the various classes and methods included in the xml library.

Low-level XML and TEXT over HTTP and TCP Client communication (com)

The Genero Web Services com library provides two classes, HTTPRequest and HTTPResponse, to perform low-level XML and TEXT over HTTP communications on the client side. Two more classes, TCPRequest and TCPResponse, are also provided to perform low-level XML and TEXT over TCP communications on the client side. This allows communication between applications using the core Web technology, taking advantage of the large installed base of tools that can process XML delivered plainly over HTTP or TCP, as well as SOAP over HTTP.

Specific streaming methods are also available to improve the communication by sending XML to the network even if the serialization process is not yet finished, as well as for the deserialization process.

It is also possible to prevent asynchronous requests from being blocked when waiting for a response, and to perform specific HTTP form encoded requests as specified in HTML 4 or XForms 1.0.

See HTTPRequest and HTTPResponse for information about HTTP classes included in the com library.
See TCPRequest and TCPResponse for information about TCP classes included in the com library.

Generating low-level and asynchronous Client stubs from WSDL

The fglwsdl tool generates all client stubs with the low-level HTTPRequest and HTTPResponse classes of the com library to perform HTTP communications. The low-level generated stub also takes advantage of the streaming methods, if Document Style or RPC-Literal web services are performed. Streaming is not possible with RPC-Encoded web services, as nodes can have references to other nodes in the XML document, requiring the entire document in memory to perform serialization or deserialization.

The fglwsdl tool also generates two new 4GL functions for each operation of a Web service. These two functions enable you to perform asynchronous web service operation calls by first sending the request, and retrieving the corresponding response later in the application. This allows you to prevent a 4GL application from being blocked if the response of a web service operation takes a certain amount of time.

See HTTPRequest and HTTPResponse for information about classes included in the com library, and the fglwsdl tool for additional information about generated code and asynchronous calls.

Generation of data types from XML schemas (XSD)

Genero Web Services provides an enhanced fglwsdl tool that is able to generate 4GL data types from a XML schema. The data types can then be used in your application to be serialized or deserialized in XML. The resulting XML is a valid instance of that XML schema, and validation with a XML validator will succeed.

See the fglwsdl tool for additional information about XSD.

Back to the top


Version 2.00

Web Services Styles

You can now choose to use Document Style Service (Doc/Literal) or RPC Literal Style Service (RPC/Literal) with Genero Web Services (GWS), for .NET compatibility and WS-I compatibility (standards defined by the Web Services Interoperability organization).

Note: RPC/Encoded Style Service (Traditional SOAP section 5) is available for backwards compatibility.

See Web Services Styles and the GWS Web Server Tutorial for additional information.

Generation of Server and Client from WSDL

Genero Web Services provides a tool, fglwsdl, to allow a Genero application that is accessing a Web Service to obtain the WSDL information for the desired service. It does not matter what language the Web Service is written in.  The fglwsdl tool is installed in Genero as part of the Genero Web Services package.

See The fglwsdl Tool for additional information about WSDL.

Genero Web Services Library (com)

You no longer need to create a runner that includes the Genero Web Services package. Instead, your applications import the Genero Web Services library named com. This library provides classes and methods that allow you to perform tasks associated with creating GWS Servers and Clients, and managing the Web Services.

See Genero Web Services COM Library for information about the various classes and methods included in the com library.

SOAP Header Management

GWS supports SOAP header management through the CreateHeader method in the Web Service class that is part of the Web Services library (com).

See Web Service Class for additional information.

HTTPS support on the client side

GWS supports secure communications through the use of encryption and standard X.509 certificates. Based on the OpenSSL engine, new security features allow a Web Services client to communicate with any secured server over HTTP or HTTPS.

A new tool is provided, fglpass, allowing you to encrypt a password from a standard X.509 certificate, and to de-crypt a password you previously encrypted with a certificate.

Entries in the FGLPROFILE file are used to define the configuration for client security.

See  FGLPROFILE Password Encryption and  FGLPROFILE Configuration, as well as the other pages listed in the Security section, for additional information.

Connections via proxies on the Client Side

You can configure a GWS Client to connect via an HTTP proxy by adding an entry in the FGLPROFILE file.

See the SSL Proxy Tutorial for additional information.

Multiple Web Services in a Single DVM

You can define multiple Web Services in a single Genero DVM. When you start the Web Services engine, all registered Web Services are started.  

See the Web Services Engine class that is part of the Web Services library (com).

Service Location Repository

You can remap the location of Genero Web Services using entries in the FGLPROFILE file, depending on the network configuration and the access rights management of the deployment site.

See Using Logical Names for Service Locations for additional information.

Serializing Genero Data Types

You can add optional attributes to the definition of data types. You can use these attributes to map the BDL data types in a Genero Web Services Client or Server application to their corresponding XML data types. 

See XML Attributes for additional information, including a complete list of attributes that can be used.

WSHelper.42m library file

This file contains internal 4GL functions to handle SOAP requests and errors.

The file is provided in the $FGLDIR/lib directory of the Genero Web Services package, and should be linked into every Genero Web Services Server or Client program.

Back to the top