281.6.5. 在 webapp 中使用 Restlet servlet
根据 Camel 2.8
的 三种方式,可以在 servlet 容器中配置 Restlet 应用程序,并使用子类 SpringServerServlet 通过注入 Restlet 组件来启用 Camel 中的配置。
在 servlet 容器中使用 Restlet servlet 可让路由配置 URI 中的相对路径(删除硬编码的绝对 URI 的限制),以及用于托管 servlet 容器来处理传入请求(而不是在新端口上生成单独的服务器进程)。
先决条件
您需要在 Maven pom.xml 文件中的 restlet 中添加对 Spring 扩展的依赖项:
<dependency> <groupId>org.restlet.jee</groupId> <artifactId>org.restlet.ext.spring</artifactId> <version>${restlet-version}</version> </dependency>
流程
要配置 Restlet 应用,请在您的 camel-context.xml 中添加以下内容:
<camelContext> <route id="RS_RestletDemo"> <from uri="restlet:/demo/{id}" /> <transform> <simple>Request type : ${header.CamelHttpMethod} and ID : ${header.id}</simple> </transform> </route> </camelContext> <bean id="RestletComponent" class="org.restlet.Component" /> <bean id="RestletComponentService" class="org.apache.camel.component.restlet.RestletComponent"> <constructor-arg index="0"> <ref bean="RestletComponent" /> </constructor-arg> </bean>
将以下内容添加到 web.xml; 中 ;
<!-- Restlet Servlet --> <servlet> <servlet-name>RestletServlet</servlet-name> <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class> <init-param> <param-name>org.restlet.component</param-name> <param-value>RestletComponent</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>RestletServlet</servlet-name> <url-pattern>/rs/*</url-pattern> </servlet-mapping>
结果
您可以在 http://localhost:8080/mywebapp/rs/demo/1234
中访问部署的路由,其中 localhost:8080
是 servlet 容器的服务器和端口,mywebapp
是部署的 webapp 的名称。
您的浏览器将显示以下内容:
"Request type : GET and ID : 1234"