This is an automated email from the ASF dual-hosted git repository. tsato pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 736113a CAMEL-11497: Add 'Servlet Tomcat Example' 736113a is described below commit 736113a325a3978ebf06a1d20616a77413b5d6f6 Author: Tadayoshi Sato <sato.tadayo...@gmail.com> AuthorDate: Thu Jan 24 13:43:48 2019 +0900 CAMEL-11497: Add 'Servlet Tomcat Example' --- .../src/main/docs/servlet-component.adoc | 8 +- .../modules/ROOT/pages/servlet-tomcat-example.adoc | 121 +++++++++++++++++++++ 2 files changed, 125 insertions(+), 4 deletions(-) diff --git a/components/camel-servlet/src/main/docs/servlet-component.adoc b/components/camel-servlet/src/main/docs/servlet-component.adoc index 9e52612..56c12ef 100644 --- a/components/camel-servlet/src/main/docs/servlet-component.adoc +++ b/components/camel-servlet/src/main/docs/servlet-component.adoc @@ -222,8 +222,8 @@ side-effects. === Sample NOTE: From Camel 2.7 onwards it's easier to use <<servlet-component,Servlet>> in -Spring web applications. See link:servlet-tomcat-example.html[Servlet -Tomcat Example] for details. +Spring web applications. See +<<ServletTomcatExample-ServletTomcatExample,Servlet Tomcat Example>> for details. In this sample, we define a route that exposes a HTTP service at http://localhost:8080/camel/services/hello. @@ -289,7 +289,7 @@ address: `("http://localhost:8080/camel/services") + RELATIVE_PATH("/hello")` ==== Sample when using Spring 3.x -See link:servlet-tomcat-example.html[Servlet Tomcat Example]. +See <<ServletTomcatExample-ServletTomcatExample,,Servlet Tomcat Example>>. ==== Sample when using Spring 2.x @@ -493,7 +493,7 @@ The automatic mapping of the Camel servlet can also be disabled. * Endpoint * Getting Started -* Servlet Tomcat Example +* <<ServletTomcatExample-ServletTomcatExample,Servlet Tomcat Example>> * link:servlet-tomcat-no-spring-example.html[Servlet Tomcat No Spring Example] * <<http-component,HTTP>> diff --git a/docs/user-manual/modules/ROOT/pages/servlet-tomcat-example.adoc b/docs/user-manual/modules/ROOT/pages/servlet-tomcat-example.adoc new file mode 100644 index 0000000..99cfed5 --- /dev/null +++ b/docs/user-manual/modules/ROOT/pages/servlet-tomcat-example.adoc @@ -0,0 +1,121 @@ +[[ServletTomcatExample-ServletTomcatExample]] +=== Servlet Tomcat Example + +*Available as of Camel 2.7* + +This example is located in the +link:https://github.com/apache/camel/blob/master/examples/camel-example-servlet-tomcat[examples/camel-example-servlet-tomcat] +directory of the Camel distribution. +There is a `README.txt` file with instructions how to run it. + +If you use Maven then you can easily package the example from the command line: + +---- +mvn package +---- + +[[ServletTomcatExample-About]] +==== About + +This example demonstrates how you can use <<servlet-component,Servlet>> to expose +a http service in a Camel route. + +[[ServletTomcatExample-Implementation]] +==== Implementation + +In the `web.xml` file in the `src/main/webapp/WEB-INF` folder the `CamelServlet` +is defined. This is mandatory to do when using the <<servlet-component,Servlet>> +component. + +[source,xml] +---- +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> + + <display-name>My Web Application</display-name> + + <!-- 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> + + <!-- Camel servlet --> + <servlet> + <servlet-name>CamelServlet</servlet-name> + <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> + + <!-- Camel servlet mapping --> + <servlet-mapping> + <servlet-name>CamelServlet</servlet-name> + <url-pattern>/camel/*</url-pattern> + </servlet-mapping> + +</web-app> +---- + +The route is a simple <<contentBasedRouter-eip,Content Based Router>> defined +in the DSL XML as shown: + +[source,xml] +---- +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:camel="http://camel.apache.org/schema/spring" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/spring"> + + <route id="helloRoute"> + <!-- incoming requests from the servlet is routed --> + <from uri="servlet:hello"/> + <choice> + <when> + <!-- is there a header with the key name? --> + <header>name</header> + <!-- yes so return back a message to the user --> + <transform> + <simple>Hi I am ${sysenv.HOSTNAME}. Hello ${header.name} how are you today?</simple> + </transform> + </when> + <otherwise> + <!-- if no name parameter then output a syntax to the user --> + <transform> + <constant>Add a name parameter to uri, eg ?name=foo</constant> + </transform> + </otherwise> + </choice> + </route> + + </camelContext> + +</beans> +---- + +[[ServletTomcatExample-Runningtheexample]] +==== Running the example + +This example runs in Apache Tomcat, so you will have to package the .war file and copy +it to the webapp folder of Tomcat, which is the hot deploy folder. + +There is a main page at +http://localhost:8080/camel-example-servlet-tomcat which has more instructions. +You can then use a web browser and send a request to the +http://localhost:8080/camel-example-servlet-tomcat/camel/hello URL. + +[[ServletTomcatExample-SeeAlso]] +==== See Also + +* link:examples.adoc[Examples] +* <<servlet-component,Servlet>> +* <<http-component,HTTP>>