Hi Nodet,
As far as I understand the SOAP 1.2 spec, the GET HTTP verb is used
for the SOAP Response MEP, which means there is no input message,
but only a response message. So this is part of the SOAP binding
and, as you said, there is no relationship with the HTTP binding.
Yes i agree, in SOAP1.2 GET HTTP verb, there is no input message, but has the HTTP GET request, right? So, that's how current isGET works, you can use browser to get the response message back.
So uri scheme we used is
http://localhost/SoapContext/SoapPort/greetMe/me/CXF or
http://localhost/SoapContext/SoapPort/greetMe/?me=CXF
And the basic idea is that other language can also consume the service , for example, for PHP , you can use the curl to GET the response message from the service. And eventually, the isGET not only support SOAP1.2, but support SOAP1.1 and XML binding as well.

As far as the code is concerned, I don't know how is the plan to support
policies definition at the operation level (or is it already done ?),
but I don't
really understand how it would be possible without changing the interceptor
chain dynamically, or by defining a tree of interceptors (instead of a
list), where
a subtree would be picked given the ongoing operation. This is the same problem for the GET / POST problem on the SOAP binding: an operation can be mapped
to a GET request, while another one would be mapped to a POST request.
So you need to select a subtree of the interceptor chain here.

Because it's GET, so the client side is just URLConnection, or the client is the browser, there is a URIMappingInterceptor sit in the server side, the isGET will skip all the interceptors not necessary in GET processing, it's the URIMapping interceptor to dispatch the invocation. the rest is as same as the POST processing.

I'm OK with the changing the chain dynamically, they both works. if we change the chain dynamically, then for both the SOAP binding and XML binding and any other binding to filter the interceptors dynamically, i mean the maintenance cost is same. but this approach do have a benefit, the benefit is that all the isGET logic in the same place, if we want to add some configuration for this function, it'll be more easier. But the other side is, it'll be harder to change the chain if the interceptor is coarse-grained, that means we want some part of the logic of the inteceptor, but in some conditions we want to exclude the interceptors, but yes, you can break down the interceptors into pieces to work around the problem. So there's pros and cons.

Cheers,
James.

Reply via email to