A Handler Chain with Two Handlers
In the predictionsSOAP service, three of the operations require the id
of a Prediction
: the getOne,
edit, and delete operations. The id
is a positive integer. What happens if the client, through
oversight or mischief, submits a negative integer or zero as the id
? The service
throws a SOAP fault. A SOAP request with a bad id
is a waste of time and bandwidth, and avoiding
such a request would be a gain in efficiency.
To guard against an invalid id
, a client-side handler could inspect every
outgoing SOAP message to determine if it has an id
and, if so, whether the id
is a positive
integer. If the id
is negative, the handler could substitute the absolute value and let the
request continue on its way to the service; if the id
is zero, the handler could throw an exception immediately and
thereby short-circuit a request that is doomed to fail on the service side. The client-side
SOAPHandler
already in place could be amended to do this work, as the SOAP handler has access to the entire SOAP message; however, a
LogicalHandler
is better suited to the proposed task because the id
is part of the payload in
the SOAP request’s body. The existing SOAPHandler
can be left as is and a LogicalHandler
can
be added to the handler chain. Modular design recommends this approach, which is also an opportunity
to show a two-member handler chain in action.
There are two ways in which the LogicalHandler
can access the payload of a SOAP message: as a native Java object generated ...
Get Java Web Services: Up and Running, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.