I am using the <http:provider /> bc with a custom marshaler to interact with
another system, S1
I am sending the message to S1 and expects a standard response from S1 based
on which I update the DB as SUCCESS 


here is the EIP config

        <eip:pipeline service="e:HTTPPipe" endpoint="outBound">
          <eip:transformer>
            <eip:exchange-target service="e:RegGateway" /> <!-- connect to HTTP
endpoint-->
          </eip:transformer>
          <eip:target>
            <eip:exchange-target service="e:RegAck" /> <!-- Handle 
acknowledgement
response-->
          </eip:target>
        </eip:pipeline>

http config

  <http:provider 
            service="e:RegGateway"
            endpoint="regOutbound"
            locationURI="http://uri.test.tt";
            marshaler ="#regMarshaler">
    </http:provider>
    
RegAck is a bean SU to update database with the response received.

In the production mode the S1 could be down or unresponsive due to various
reason. In such a scenario I would want to set a RESEND in my database for
the corresponding message.

To accomplish this I am implementing the  handleException() method in my
custom marshaler, regMarshaler and setting the exchange in error. here is
the code snippet from the regMarshaler 

   public void handleException(MessageExchange exchange, SmxHttpExchange
httpExchange, Throwable ex){

        log.info("Some Exception " + ex.getMessage());
        try{
                Fault fault= exchange.createFault();
                fault.setContent(exchange.getMessage("in").getContent());
                exchange.setFault(fault);
                exchange.setStatus(ExchangeStatus.ERROR);
                log.info("fault created");
                
        }
        catch(Exception e){
                log.info("unable to create fault");
        }
    }

 I am then checking for fault in my Ackbean to check if the exchange was in
fault and handle it accordingly by setting the record as RESEND in my DB.

But isn't working. 

Everytime I try to simulate a scenario it always gives a log entry as 

 WARN  [SimpleEndpoint] SimpleEndpoint.fail called:


What should I do to handle the unknown issue with the http endpoint so that
I am able to update the corresponding record in DB as resend.

Thanks in advance.
-- 
View this message in context: 
http://old.nabble.com/handle-exception-with-servicemix-http-bc-tp27742660p27742660.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to