Looking further into this problem, I notice that the replies' To addresses are always correct. If there's a fault, then the WS-Addressing To header shows the faultTo address. The problem in both synchronous and asynchronous situations is that the reply always comes back to the replyTo address (same channel for synchronous), instead of the faultTo address (despite it showing up in the reply's To address).
Any ideas about this? Thanks, Jesse -----Original Message----- From: Jesse Pangburn [mailto:[email protected]] Sent: Tuesday, July 23, 2013 4:42 PM To: [email protected] Subject: CXF-4382 says that faultTo WSA header should work, but it doesn't Hi, I have a service based on the Provider class and have tried the following faultTo tests, in both cases triggering the fault by having "schema validation" enabled and sending an invalid message: 1. Use no decoupled endpoint on the client for replyTo (normal two way web service), and specify a faultTo of "http://localhost:9003/faultPath". The server throws the fault from the invalid message and sends it back as a normal reply- ignoring the faultTo address. 2. Using a decoupled endpoint on the client for replyTo(one way web service with callback), and specify a faultTo of "http://localhost:9003/faultPath". The server throws the fault from the invalid message and sends it to the replyTo URL instead of the faultTo URL. Are there only some types of faults that cause faultTo to be used? The CXF-4382 issue seems to indicate that both one-way and two-way messages should work: https://issues.apache.org/jira/browse/CXF-4382 Following is CXF debug logging from the client I created to test this (showing the #1 case for normal two way web service), with the outbound message violating schema to get the fault. I checked this with Wireshark and it's clearly a normal two-way operation with the faultTo address ignored. ************************************ INFO: Outbound Message --------------------------- ID: 3 Address: http://localhost:9003/xdsregistryb Encoding: UTF-8 Http-Method: POST Content-Type: application/soap+xml Headers: {Accept=[*/*]} Payload: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing">http://cxf.apache.org/jaxws/dispatch/DocumentRegistry_PortType/InvokeRequest</Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:2eae8433-d42a-4749-b053-f5b5805fe8e9</MessageID><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:9003/xdsregistryb</To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous</Address></ReplyTo><FaultTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://localhost:9003/faultBack</Address></FaultTo></soap:Header><soap:Body><query:xyz xmlns:query="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"></query:xyz></soap:Body></soap:Envelope> -------------------------------------- Jul 23, 2013 12:59:05 PM org.apache.cxf.services.DocumentRegistry_Service.DocumentRegistry_Port_Soap12.DocumentRegistry_PortType INFO: Inbound Message ---------------------------- ID: 3 Response-Code: 500 Encoding: UTF-8 Content-Type: application/soap+xml; charset=UTF-8 Headers: {content-type=[application/soap+xml; charset=UTF-8], Server=[Jetty(8.1.7.v20120910)], transfer-encoding=[chunked]} Payload: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing"/><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:241ae851-a174-4715-a191-8e9d2fc4e243</MessageID><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:9003/faultBack</To><RelatesTo xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:2eae8433-d42a-4749-b053-f5b5805fe8e9</RelatesTo></soap:Header><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Sender</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">Could not parse the XML stream caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'query:xyz' ************************************** Thanks, Jesse
