2014-07-10 15:21 GMT+02:00 Daniel Kulp <[email protected]>:
>
> In general, CXF routes requests based on the target URI/address, not the 
> Action, although there are some exceptions to that….
>
> In general, CXF only allows a single endpoint to be deployed on a specific 
> address.   Through the MultipleEndpointObserver stuff, it’s possible to do 
> it, but it’s not exactly easy.
>
> So… where is the Action used?   Under normal circumstances, the Action will 
> be looked at by various interceptors on the chain that may be looking for a 
> specific Action.   For example, if WS-RM is configured, the RM interceptors 
> will be looking for Actions that pertain to RM (CreateSequence, etc…) at 
> which point they will re-route the request into the RM stuff.   
> WS-SecureConversation is another example.  It’s interceptor will look for 
> Actions related to issue/renew/cancel tokens.   WS-Mex is another.      
> Basically, if it gets through the chain without something “intercepting” the 
> request, the request just goes to the normal endpoint like a normal request 
> and is handled via the contents of the soap body.     We likely SHOULD have a 
> check in there to make sure the Action matches like we do check to make sure 
> the SOAPAction header (if specified) matches.


Thanks Daniel. Good explanation
What kind of checking is applied to SOAPAction ?  SOAPAction == URI requested ?




>
> That said, writing this has kind of gotten me thinking…..   Those three uses 
> cases likely could be re-written in terms of the MulipleEndpointObserver 
> stuff with an Observer that would route based on the Actions.    Each of 
> those three would just need to register an Endpoint with the Action based 
> observer and it would handle the routing.     That’s a lot of code to 
> refactor though…  Hmmm…..
>
> Dan
>
>
>
> On Jul 9, 2014, at 10:14 AM, Richard Snowden <[email protected]> 
> wrote:
>
>> Hi,
>>
>> I'm working with the WS-Addressing example from CXF 3.0.0 found here:
>> apache-cxf-3.0.0-src\distribution\src\main\release\samples\ws_addressing\
>>
>> I captured one request, sent from client to server, and used Chromes
>> Postman extension to modify it:
>> - made sure there's no SOAPAction the HTTP-Header
>> - set wsa:Action to some random value, like "blablabla"
>>
>> Surprisingly it still worked!
>>
>> It seems the WS-Addressing SOAP-Header field "Action" is not used at all in
>> CXF. Is this a bug or a feature? ;-)
>>
>>
>> Here is one of my requests:
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>>    <soap:Header>
>>        <Action xmlns="http://www.w3.org/2005/08/addressing
>> ">blablabla</Action>
>>        <MessageID xmlns="http://www.w3.org/2005/08/addressing
>> ">urn:uuid:fa46e01c-f5c7-4d5b-b653-0f79d59885e8</MessageID>
>>        <To xmlns="http://www.w3.org/2005/08/addressing";>
>> http://localhost:9000/SoapContext/SoapPort</To>
>>        <ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
>>            <Address>http://www.w3.org/2005/08/addressing/anonymous
>> </Address>
>>        </ReplyTo>
>>    </soap:Header>
>>    <soap:Body>
>>        <greetMe xmlns="http://apache.org/hello_world_soap_http/types";>
>>            <requestType>rsnowden</requestType>
>>        </greetMe>
>>    </soap:Body>
>> </soap:Envelope>
>
> --
> Daniel Kulp
> [email protected] - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>

Reply via email to