NonStop SOAP User's Manual

NonStop SOAP User-Exits
NonStop SOAP User’s Manual520501-012
C-24
SOA Enable a Nonstop Server Application With
User-Exits
server using the automatically generated Makefile (modified as necessary) to produce
the customized NonStop SOAP server executable.
The user-exit code is implemented by overriding the virtual methods of the class
SoapUEHandler. The SoapPW_UEHandler_<servicename> class is derived from
the base class SoapUEHandler, which, in turn, uses the classes ServiceReqResp
and ServiceEnv. Because the SoapPW_UEHandler_<service name> class is
similar to the SoapUEHandler_Generic class, you may use the
SoapUEHandler_Generic class as a template for your service-specific user-exit
class.
User-Exit Code Implementation
Following is an example user-exit code implementation for customizing the NonStop
SOAP server for the NonStop Tuxedo SIMPAPP application. Again, note that the
general principles described here apply, even if NonStop Tuxedo is not being used.
This is achieved by implementing three user-exit methods of the
SoapPW_UEHandler_TOUPPER (i.e., SoapPW_UEHandler _<service name>) class:
The Pre_Process() method, which skips the normal NonStop SOAP server
service() routine
The Pre_Service()method, which invokes the NonStop Tuxedo TOUPPER
service and saves the service response buffer
The Pre_Marshal()method, which transforms the Service Response buffer into
the SOAP Response structure expected by NonStop SOAP software’s marshal()
method
To summarize, the user-exit processing for this example (customized user-exit
methods are shown in italic type) is as follows:
<xml> /* service consumer SOAP request XML document input to
NSSOAP server */
> Pre_Process()
skipService() /* bypass the standard NSSOAP service
invocation */
> process()/unmarshal()
Transform the SOAP request XML document into the SOAP Request structure based
on the service request DDL definition
> Pre_Service()
Transform the SOAP Request structure into the Service Request buffer expected by
the NonStop Tuxedo service
tpcall(“TOUPPER”, req_buf, resp_buf) /*invoke the target NSTuxedo service*/