Step 3: Instantiate a new session by calling the web service operation set as session initiator

Call the 4GL function generated from the WSDL that is defined as session initiator on the server. This function returns a W3CEndpointReference parameter that contains the WS-Addressing 1.0 reference parameters representing the new instance created on server side.

If your application handles several instances, you will have to copy and store those parameters in your application to identify a service instance for further requests.

As the WS-Addressing 1.0 reference parameters are defined as any XML document, they are represented as a dynamic list of xml.DomDocument in 4GL.

For example:

DISPLAY "Creating a new instance ..."
LET wsstatus = GetInstance_g() # call the service session initiator 
                               # web function
IF wsstatus == 0 THEN
   FOR ind=1 TO
     ns1GetInstanceResponse.return.ReferenceParameters._LIST_0.getLength()
      LET instance1[ind]=
        ns1GetInstanceResponse.return.ReferenceParameters._LIST_0[ind].clone() 
        # copy the service returned WS-Addressing 1.0 reference parameters
   END FOR
ELSE
     ... handle soap errors
END IF

When creating a new instance, ensure that the Parameters member of the generated global variable of type tWSAGlobalEndpointType has been set to NULL, otherwise the server will complain.