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