cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Pangburn (JIRA)" <>
Subject [jira] [Updated] (CXF-5354) faultTo address is ignored when fault is thrown
Date Wed, 23 Oct 2013 23:57:43 GMT


Jesse Pangburn updated CXF-5354:


This is a modification of the 2.7.6 jaxws_dispatch_provider sample (first noticed the problem
on my 2.7.7 installation, so used an older 2.7.6 installation to make sure it wasn't a problem
specific to 2.7.7) to illustrate the problem.  To run it, open a terminal and execute:
mvn -P server
Then open another terminal and execute:
mvn -P client

The client requests a replyTo at one URL and a faultTo at another.  There's nothing actually
listening on these URLs but they are on the same port (9000) that the server is listening
on, so in the server output you see:
org.apache.cxf.transport.http.HTTPException: HTTP response '404: Not Found' when communicating
with http://localhost:9000/replyBack

This is where it's trying to send the fault- to the replyTo address instead of the faultTo

> faultTo address is ignored when fault is thrown
> -----------------------------------------------
>                 Key: CXF-5354
>                 URL:
>             Project: CXF
>          Issue Type: Bug
>          Components: WS-* Components
>    Affects Versions: 2.7.7
>            Reporter: Jesse Pangburn
>         Attachments:
> I have a Provider based service and find that with WS-Addressing enabled, it doesn't
handle FaultTo addresses properly.  The case I found that caused this is when I turned on
Schema Validation and sent a request that doesn't match the schema, then it throws a fault
but instead sends the reply to the replyTo address.  I then tried using a bogus mustUnderstand
header to cause a fault to see if it was just related to the schema validation, but it has
the same problem.
> Here's a sample request message to cause this (using mustUnderstand header so you don't
have to setup schema validation to test):
> {code:xml}
> <?xml version="1.0"?>
> <soap:Envelope xmlns:soap="">
>   <soap:Header>
>     <Action xmlns="">anything</Action>
>     <MessageID xmlns="">urn:uuid:2eae8433-d42a-4749-b053-f5b5805fe8e9</MessageID>
>     <To xmlns="">http://localhost:9003/xdsregistryb</To>
>     <ReplyTo xmlns="">
>       <Address>http://localhost:9003/replyBack</Address>
>     </ReplyTo>
>     <FaultTo xmlns="">
>       <Address>http://localhost:9003/faultBack</Address>
>     </FaultTo>
>     <bogus soap:mustUnderstand="true">this junk will fault</bogus>
>   </soap:Header>
>   <soap:Body>
>     <junk/>
>   </soap:Body>
> </soap:Envelope>
> {code}
> Note the ReplyTo is http://localhost:9003/replyBack and the FaultTo is http://localhost:9003/faultBack.
 When I send to my Provider service, the log file shows the response going to the replyBack
url, but the To address in WS-Addressing header shows the faultBack url- so it's halfway right!
 This is the case with both schema validation faults and the above example of bogus mustUnderstand
> Here's the Wireshark network trace (so there is no possibility of bad logging being the
> {quote}
> POST /replyBack HTTP/1.1
> Content-Type: application/soap+xml; charset=UTF-8
> Accept: */*
> User-Agent: Apache CXF 2.7.7
> Cache-Control: no-cache
> Pragma: no-cache
> Host: localhost:9003
> Connection: keep-alive
> Content-Length: 706
> <soap:Envelope xmlns:soap=""><soap:Header><Action
xmlns=""/><MessageID xmlns="">urn:uuid:6a5190fc-256f-428c-9e5e-8b79520bbf0c</MessageID><To
xml:lang="en">MustUnderstand headers: [bogus] are not understood.</soap:Text></soap:Reason></soap:Fault></soap:Body></soap:Envelope>
> {quote}
> Sorry, wiki markup is making bogus in red, not intentional.  See how the address listed
at the top doesn't match the WS-Addressing To address?  With anonymous replyTo address then
you get the fault back on the same synchronous request channel, and it still shows the /faultBack
url in the To address.

This message was sent by Atlassian JIRA

View raw message