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
> >
> >
> >   
> 

Reply via email to