Hi team,

I have found several examples of camel servlet for tomcat server using spring 
DSL, I want to use Java DSL and create a RouteBuilder as shown below. This 
servlet works as expected on Jetty when I run using mvn jetty:run command, but 
doesn't work with tomcat server.

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;

public class DefaultRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        System.out.println("DefaultRouter");
        from("servlet:hello?matchOnUriPrefix=true").process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                String contentType = 
exchange.getIn().getHeader(Exchange.CONTENT_TYPE, String.class);
                String path = exchange.getIn().getHeader(Exchange.HTTP_URI, 
String.class);
                path = path.substring(path.lastIndexOf("/"));
                exchange.getOut().setHeader(Exchange.CONTENT_TYPE, contentType 
+ "; charset=UTF-8");
                exchange.getOut().setHeader("PATH", path);
                exchange.getOut().setBody("<b>Hello World</b>");
            }
        });
    }
}


My web.xml looks like this
<?xml version="1.0" encoding="ISO-8859-1"?>

<webapp>
  <display-name>camel-servlet</display-name>

    <context-param>
        <param-name>name</param-name>
        <param-value>MyCamel</param-value>
    </context-param>
    <context-param>
        <param-name>routeBuilder-MyRoute</param-name>
        
<param-value>org.apache.camel.community.so.servletlistener.DefaultRouteBuilder</param-value>
    </context-param>
  <listener>
    
<listener-class>org.apache.camel.component.servletlistener.JndiCamelServletContextListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>CamelServlet</servlet-name>
    
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>CamelServlet</servlet-name>
    <url-pattern>/camel/*</url-pattern>
  </servlet-mapping>
</webapp>

Any help would be appreciated.

Thanks & Regards,
Riddhi

Reply via email to