The steps that occur when an application is configured
for delegation.
- An application or service start is requested. These requests are
identified by /wa/r, /ja/r,
or /ws/r.
- The Genero Application Server dispatcher passes the request to
the REST service identified as the delegation service.
The delegation service is specified in the application's configuration.
The delegation service is written in Genero and managed by the Genero
Application Server as a standard REST Web service. The delegation
service should reside on the same GAS as the application.
- The REST service instructs the Genero Application Server to either:
- refuse the start of the application or service.
- allow the start the application. The delegate service is able
to add some environment variables to give additional information to
the allowed application.
- allow for a service any request forwarded to it. All Web services
requests are in /ws/r so they all go to the delegate
service.
The delegation REST service refuses the start
of the application or service
In this scenario, the
delegation REST service refuses the start of the application or
service. The REST service communicates with the user agent in
HTTP using the com.HTTPServiceRequest object.
For example, it could return an XHTML form asking for a user
name and password to grant access to the application or service.
Figure 1. REST service communicates with User Agent
but does not start the application or service
In this figure:
- (1) Start a new application or service of the form /wa/r, /ja/r
or /ws/r.
- (D) Delegate application or service start to the service described
in the configuration file (xcf).
- (2) Forward the request to REST service for delegation process
- (A) REST program responds directly to the User Agent (with a login
page, for instance).
- (3) (4) Response is sent back to the User Agent.
The delegation REST service allows the start
of the application or service
In this scenario, the
delegation REST service allows the start the application or service
as if launched directly from the user agent.
Figure 2. REST service approves application or service start
In this figure:
- (1) Start a new application or service of the form /wa/r, /ja/r,
or /ws/r.
- (D) Delegate application or service start to the service described
in the configuration file (xcf).
- (2) Forward request to REST service for delegation process
- (B) Genero REST program allows to start the proxy (login and password
are correct, for instance).
- (3) (4) Response is sent back to the User Agent.
- (5) REST program response with HTTP code 307 and description string.
- (C) Dispatcher detects REST command and starts the proxy
- (6) Dispatcher forwards response from REST program to proxy
- (7) (8) Any request is forwarded to the proxy without going to
the REST service (excepted for GWS that starts a new delegation process).
To allow the application to start, the Genero REST service returns
a specific HTTP code and description to the dispatcher using the
com.HTTPServiceRequest object.
When the dispatcher gets such an HTTP response from the REST service,
it starts a new proxy and forwards the request to it, as if no delegation
had taken place.