Sure.

camel-config.xml:

<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="
            http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
            http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd";>
     
    <!-- create a camel context as to start Camel -->
        <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
                <package>package.contains.route.builder</package>
        </camelContext>
</beans>

web.xml:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
        id="WebApp_ID" version="2.5">
                
        <servlet>
                <servlet-name>CamelServlet</servlet-name>
                <servlet-class>
                        
org.apache.camel.component.servlet.CamelHttpTransportServlet 
                </servlet-class>
                <init-param>
                        <param-name>matchOnUriPrefix</param-name>
                        <param-value>true</param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
        </servlet>
        
        <servlet-mapping>
                <servlet-name>CamelServlet</servlet-name>
                <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
        
        <!-- location of spring xml files -->
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:camel-config.xml</param-value>
        </context-param>
    
        <!-- the listener that kick-starts Spring -->
        <listener>
        
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>             
</web-app>

RouteBuilder java class:
public class ServletToJmsRouteBuilder extends RouteBuilder {

        public void configure() throws Exception {
                from("servlet:///hello?servletName=CamelServlet").process(new 
Processor()
{

            public void process(Exchange exchange) {
                String contentType = (String)
exchange.getIn().getHeader(Exchange.CONTENT_TYPE, String.class); 
                String path = (String)
exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class); 
                String charsetEncoding = (String)
exchange.getIn().getHeader(Exchange.HTTP_CHARACTER_ENCODING, String.class); 
                exchange.getOut().setHeader(Exchange.CONTENT_TYPE,
contentType + "; charset=UTF-8");                         
                exchange.getOut().setHeader("PATH", path); 
                exchange.getOut().setBody("Hello World"); 
            }
        });             
        }
}

Please let me know if you need anything else. Thanks a lot.


willem.jiang wrote:
> 
> Hi,
> 
> Can you show me the camel-config.xml?
> A simple demo help me debug the issue.
> 
> Willem
> 
> janylj wrote:
>> 
>> willem.jiang wrote:
>>>
>>> If you create the servlet component, you need to specify the servlet 
>>> which the component will attach to.
>>> <bean id="servlet"
>>> class="org.apache.camel.component.servlet.ServletComponent">
>>>     <property name="camelContext" ref="camel" />
>>>          <property name="servletName" value="CamelServlet" />
>>> </bean>
>>>
>>>
>> 
>> doesn't work, because Tomcat starts error said,
>> 
>> Caused by: org.springframework.beans.InvalidPropertyException: Invalid
>> property 'servletName' of bean class
>> [org.apache.camel.component.servlet.ServletComponent]: No property
>> 'servletName' found
>> 
>> 
>> willem.jiang wrote:
>>>
>>> You don't need to specify the servlet component in spring, if there is 
>>> only one camel servlet created in the web context.
>>>
>>>
>> 
>> doesn't work, because Tomcat starts error said,
>> 
>> Caused by: java.lang.IllegalArgumentException: Can't find the deployied
>> servlet, please set the ServletComponent with it or delopy a
>> CamelHttpTransportServlet int the web container
>> 
>> What I am missing? Please note that I am using Spring
>> ContextLoaderListener.
>> Thanks a lot.
>> 
>> my web.xml,
>> 
>>      <!-- location of spring xml files -->
>>      <context-param>
>>              <param-name>contextConfigLocation</param-name>
>>              <param-value>classpath:camel-config.xml</param-value>
>>      </context-param>
>> 
>>      <!-- the listener that kick-starts Spring -->
>>      <listener>
>>      
>> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>>      </listener>
>>      
>>      <servlet>
>>              <servlet-name>CamelServlet</servlet-name>
>>              <servlet-class>
>>                      
>> org.apache.camel.component.servlet.CamelHttpTransportServlet 
>>              </servlet-class>
>>              <init-param>
>>                      <param-name>matchOnUriPrefix</param-name>
>>                      <param-value>true</param-value>
>>              </init-param>
>>              <load-on-startup>1</load-on-startup>
>>      </servlet>
>>      
>>      <servlet-mapping>
>>              <servlet-name>CamelServlet</servlet-name>
>>              <url-pattern>/services/*</url-pattern>
>>      </servlet-mapping>
>> 
>> 
>> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/How-to-create-a-Servlet-component--tp24909157p24940161.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to