Using camel 2.12.1.

I am using timer component to send head request to a server uri as below.

  RouteBuilder builder = new RouteBuilder() {
    @Override
      public void configure() {
        from("timer://" + serverUrl + "?fixedRate=true&delay=0&period=" +
period).routeId(routeId)
          .onException(HttpOperationFailedException.class) 
            .process(new Processor() { 
              public void process(Exchange exchange) throws Exception { 
                LOGGER.log(Level.INFO, "HttpOperationFailedException
thrown);
              } 
            })
        .end()
        .setHeader(Exchange.HTTP_METHOD, constant("HEAD"))
        .to(serverUrl + "?httpClient.soTimeout=" + httpReadTimeOut +
"&throwExceptionOnFailure=true")
        .process(new StatusProcessor(serverUrl, facadeMonitorDao));
    }
  };

According to http://camel.apache.org/http.html, 
- Response code is in the range 100..299, Camel regards it as a success
response.
- Response code is in the range 300..399, Camel regards it as a redirection
response and will throw a HttpOperationFailedException with the information.
- Response code is 400+, Camel regards it as an external server failure and
will throw a HttpOperationFailedException with the information.

Tracing the route,
- I see HEAD request is sent to server, 
- Server responds with 302 response code which is "Moved Temporarily"
- However, the HttpOperationFailedException is not thrown even when i set
the throwExceptionOnFailure=true
- Another HEAD request is set to redirect location

See below log trace message:

22:17:40,594 DEBUG [org.apache.camel.component.http.HttpProducer] thread #2
- timer://https://myserver.org/myserver) Executing http HEAD method
22:17:40,673 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"HEAD /myserver HTTP/1.1[\r][\n]"
22:17:40,673 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"user-agent: GIS ServerManager-PingService[\r][\n]"
22:17:40,674 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"firedTime: Mon Jun 16 22:17:40 UTC 2014[\r][\n]"
22:17:40,674 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"breadcrumbId: ID-nites-gis-dev-net-48451-1402955026229-3-9[\r][\n]"
22:17:40,674 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"Host: myserver.org[\r][\n]"
22:17:40,675 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"[\r][\n]"

22:17:41,724 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"HTTP/1.1 302 Moved Temporarily[\r][\n]"
22:17:41,724 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"HTTP/1.1 302 Moved Temporarily[\r][\n]"
22:17:41,725 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Date: Mon, 16 Jun 2014 22:17:47 GMT[\r][\n]"
22:17:41,725 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Location: /myserver/index.html[\r][\n]"
22:17:41,725 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Connection: close[\r][\n]"
22:17:41,725 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Content-Type: text/plain; charset=UTF-8[\r][\n]"
22:17:41,726 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"[\r][\n]"

22:17:41,804 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"HEAD /myserver/index.html HTTP/1.1[\r][\n]"
22:17:41,804 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"user-agent: GIS ServerManager-PingService[\r][\n]"
22:17:41,804 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"firedTime: Mon Jun 16 22:17:40 UTC 2014[\r][\n]"
22:17:41,804 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"breadcrumbId: ID-nites-gis-dev-net-48451-1402955026229-3-9[\r][\n]"
22:17:41,804 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"Host: myserver.org[\r][\n]"
22:17:41,805 DEBUG  thread #2 - timer://https://myserver.org/myserver) >>
"[\r][\n]"

22:17:42,475 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"HTTP/1.1 200 OK[\r][\n]"
22:17:42,475 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"HTTP/1.1 200 OK[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Date: Mon, 16 Jun 2014 22:17:48 GMT[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Last-Modified: Thu, 19 Sep 2013 03:42:20 GMT[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Content-Type: text/html;charset=UTF-8[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Content-Length: 697[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"Connection: close[\r][\n]"
22:17:42,476 DEBUG  thread #2 - timer://https://myserver.org/myserver) <<
"[\r][\n]"
22:17:42,477 DEBUG [org.apache.camel.component.http.HttpProducer] thread #2
- timer://https://myserver.org/myserver) Http responseCode: 200

What I would like to do is, prevent this auto redirect behavior by catching
the exception but it fails to catch that HttpOperationFailedException. 
Please help.



--
View this message in context: 
http://camel.465427.n5.nabble.com/Disable-auto-redirect-tp5752391.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to