Hi! Thank you for your fast response. After changing locationURI I have still problem with empty fault part. I use the latest SNAPSHOT of service-mix (3.2.2) and cxf wsdl2java (2.0.6-incubator-SNAPSHOT) Below I enclose the wsdl file:
<?xml version="1.0" encoding="UTF-8"?> <definitions name='BusyService' targetNamespace='http://busy-service.pl/busy/ws' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://busy-service.pl/busy/ws' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <types> <xs:schema targetNamespace='http://busy-service.pl/busy/ws' version='1.0' xmlns:tns='http://busy-service.pl/busy/ws' xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='BusyServiceFault' type='tns:BusyServiceFault'/> <xs:element name='addBusyPeriod' type='tns:addBusyPeriod'/> <xs:element name='addBusyPeriodResponse' type='tns:addBusyPeriodResponse'/> <xs:complexType name='addBusyPeriod'> <xs:sequence> <xs:element minOccurs='0' name='number' type='xs:string'/> </xs:sequence> </xs:complexType> <xs:complexType name='addBusyPeriodResponse'> <xs:sequence> <xs:element minOccurs='0' name='return' type='xs:int'/> </xs:sequence> </xs:complexType> <xs:complexType name='BusyServiceFault'> <xs:sequence> <xs:element name='errorDesc' type='xs:string'/> </xs:sequence> </xs:complexType> </xs:schema> </types> <message name='BusyService_addBusyPeriod'> <part element='tns:addBusyPeriod' name='addBusyPeriod'/> </message> <message name='BusyService_addBusyPeriodResponse'> <part element='tns:addBusyPeriodResponse' name='addBusyPeriodResponse'/> </message> <message name='BusyServiceFault'> <part element='tns:BusyServiceFault' name='BusyServiceFault'/> </message> <portType name='BusyService'> <operation name='addBusyPeriod' parameterOrder='addBusyPeriod'> <input message='tns:BusyService_addBusyPeriod'/> <output message='tns:BusyService_addBusyPeriodResponse'/> <fault message='tns:BusyServiceFault' name='BusyServiceFault'/> </operation> </portType> <binding name='BusyServiceBinding' type='tns:BusyService'> <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='addBusyPeriod'> <soap:operation soapAction=''/> <input> <soap:body use='literal'/> </input> <output> <soap:body use='literal'/> </output> <fault name='BusyServiceFault'> <soap:fault name='BusyServiceFault' use='literal'/> </fault> </operation> </binding> <service name='BusyService'> <port binding='tns:BusyServiceBinding' name='BusyServicePort'> <soap:address location='http://localhost:9001/busy-service'/> </port> </service> <service name='BusyServiceProxy'> <port binding='tns:BusyServiceBinding' name='BusyServiceProxyPort'> <soap:address location='http://external.host'/> </port> </service> </definitions> Generated BusyServiceFault by CXF wsdl2java is: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "BusyServiceFault", propOrder = { "errorDesc" }) public class BusyServiceFault { @XmlElement(required = true) protected String errorDesc; /** * Gets the value of the errorDesc property. * * @return * possible object is * [EMAIL PROTECTED] String } * */ public String getErrorDesc() { return errorDesc; } /** * Sets the value of the message property. * * @param value * allowed object is * [EMAIL PROTECTED] String } * */ public void setErrorDesc(String value) { this.errorDesc = value; } } And InOut message with right content of errorDesc which is received from external part: DEBUG - SedaQueue - [EMAIL PROTECTED] dequeued exchange: InOut[ id: ID:172.17.39.124-119751f9c34-5:1 status: Active role: consumer interface: {http://busy-service.pl/busy/ws}BusyService service: {http://busy-service.pl/busy/ws}BusyServiceProxy endpoint: BusyServiceProxyPort operation: {http://busy-service.pl/busy/ws}addBusyPeriod in: <?xml version="1.0" encoding="UTF-8"?><jbi:message xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper" xmlns:msg="http://busy-service.pl/busy/ws" type="msg:addBusyPeriod"><jbi:part><ns2:addBusyPeriod xmlns:ns2="http://busy-service.pl/busy/ws"><number>12123123123</number></ns2:addBusyPeriod></jbi:part></jbi:message> fault: <?xml version="1.0" encoding="UTF-8"?><JBIFault xmlns="http://cxf.apache.org/bindings/jbi"><ns2:BusyServiceFault xmlns:ns2="http://busy-service.pl/busy/ws"><errorDesc>Defined busy period should be independent of other date regions.</errorDesc></ns2:BusyServiceFault></JBIFault>] DEBUG - DeliveryChannelImpl - Notifying exchange ID:172.17.39.124-119751f9c34-5:1(10c03c6) in DeliveryChannel{servicemi x-cxf-se} from processInboundSynchronousExchange DEBUG - DeliveryChannelImpl - Notified: ID:172.17.39.124-119751f9c34-5:1(10c03c6) in DeliveryChannel{servicemix-cxf-se} from sendSync > Hi Sebastian, > > What's the servicemix version you are using? Would you please try with > the 3.2.2 snapshot? > And please change the locationURI for your provider configuration > locationURI="http://10.11.10.10:8080/BusyServiceWSImpl" (no need ?wsdl) > If you still have problem. if possible could you append your whole test > case, especially the wsdl you are using, I'd like to see the fault in > your wsdl > Actually we have a test very similar with your scenario, and the > exception handle part is always ok, please see [1], > the > //test exception handle > part > [1]http://svn.apache.org/repos/asf/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java > > Regards > > Freeman > > Sebastian Kuligowski wrote: > > Hello, > > > > I've created proxy scenario using cxf-bc and cxf-se components using > > > > CXF-BC (1) --- CXF-SE bean (2) with injected provider --- CXF-BC (3) to > > external > > endpoint (as described in all tutorials) > > > > The problem: > > > > After receiving fault from external endpoint (3) with a parameter > > ('errorDesc') included which describes bussiness cause of the fault, that > > parameter > > is empty/null after catching exception in my proxy bean. > > > > In logs I could find that the falut is wrapped properly in JBIFalut > > object after receiving soap fault from external endpoint: errorDesc > > parameter is set with proper message. > > > > fault: <?xml version="1.0" encoding="UTF-8"?><JBIFault > > xmlns="http://cxf.apache.org/bindings/jbi"><ns2:BusyServiceFault > > xmlns:ns2="http://busy-service.pl/busy/ws"><errorDesc>Defined busy > > period should be independent of other date > > regions.</errorDesc></ns2:BusyServiceFault></JBIFault> > > > <JBIFault xmlns="http://cxf.apache.org/bindings/jbi"><CalculatorFault > xmlns="http://apache.org/cxf/calculator/types"><faultInfo>Numbers: 1, > -1</faultInfo><message>Negative number cant be > added!</message></CalculatorFault></JBIFault> > > But not in catched exception below. My bean with proxied busyService > > provider: > > > > public class BusyServiceESBImpl implements BusyService { > > private BusyService busyService; // injected proxied provider > > > > // exposed by CXF-BC (1) > > public Integer addBusyPeriod(String number) throws > > BusyServiceFault_Exception { > > try { > > return getBusyService().addBusyPeriod(number); > > // external endpoint returns business exception defined in WSDL > > } catch (BusyServiceFault_Exception e) { > > System.out.println(e.getFaultInfo().getErrorDesc()); > > // is NULL!!!!!!!!! errorDesc inside BusyServiceFault object is > > lost > > System.out.println(e.getMessage()); // returns faultstring > > } > > } > > > > I would be very grateful for any help, I've spent a lot of time on > > searching any solution. > > > > Details: > > > > CXF-BC xbean.xml > > > > <cxfbc:consumer wsdl="classpath:BusyService.wsdl" > > targetService="busy-service:BusyService" > > targetInterface="busy-service:BusyService"/> > > > > <cxfbc:provider wsdl="classpath:BusyService.wsdl" > > locationURI="http://10.11.10.10:8080/BusyServiceWSImpl?wsdl" > > service="busy-service:BusyServiceProxy" > > endpoint="BusyServiceProxyPort" > > interfaceName="busy-service:BusyService" /> > > > > CXF-SE xbean.xml > > > > <cxfse:endpoint> > > <cxfse:pojo> > > <bean class="busy.esb.BusyServiceESBImpl"> > > <property name="busyService"> > > <cxfse:proxy service="busy:BusyServiceProxy" context="#context" > > type="busy.ws.BusyService" /> > > </property> > > </bean> > > </cxfse:pojo> > > </cxfse:endpoint> > > > > > > Best regards > > Sebastian Kuligowski > > > > > > >
