Hi,
I'm currently dealing with an application meant for testing the
scenarios defined by WSTF (http://www.wstf.org/). The application uses
JBossWS-CXF, currently leveraging Apache CXF trunk.
The third scenario of those WSTF tests is about WS-Addressing
interoperability, see http://www.wstf.org/docs/scenarios/sc003/sc003.xml
for all the details.
Currently I'm dealing with the 1.4 test (ASynch Echo+WSA): the client
sends a non-faulting echo message with WS-Addressing headers to indicate
an asynchronous response[1] is expected. wsa:Action, wsa:To,
wsa:MessageID and wsa:ReplyTo are required. The wsa:ReplyTo must refer
to an addressable endpoint that is also part of the application.
The success criteria for the test is that the service responds with the
appropriate echo response on a new connection to the wsa:ReplyTo EPR
specified in the echo message. On the original connection an HTTP 202 is
returned. The echo response message will contain the appropriate
WS-Addressing headers (wsa:Action, wsa:To and wsa:RelatesTo).
Currently the messages going over the wire are OK, however the test is
failing because when receiving the response message on the response
endpoint, the message is discarded with an abort on the interceptor
chain performed by the MAPCodec. The reason is that MAPCodec is not able
to find a correlated request message for the id provided in the
relatesTo attribute of the response message.
This is basically the same problem explained in CXF-2167, except we're
talking about a req-res MEP, so the application developer is not meant
(at least to me) to deal with setting the RelationshipType of relatesTo
in the response.
I'm thinking about relaxing that check for the correlated Exchange in
MAPCodec::restoreExchange, basically avoiding the abort on the
interceptor chain when the id is not found, for supporting usecases like
this.
WDYT ?
Thanks
Alessio
[1] As per WSTF definition, Asynchronous Request-Response Message
Exchange: "A SOAP message exchange in which a requester sends a SOAP
message to a service and receives a response message. "Asynchronous" in
this context refers to the manner in which the underlying transport
protocol is used to carry the request and response messages. The
response message is sent over a separate connection that is initiated by
the service to the client (a "callback")."
--
Alessio Soldano
Web Service Lead, JBoss