279.5.5. 在 webapp 中使用 Restlet servlet
根据 Camel 2.8
的 三种方式,可以在 servlet 容器中配置 Restlet 应用程序,并使用子类 SpringServerServlet 通过注入 Restlet 组件来启用 Camel 中的配置。
在 servlet 容器中使用 Restlet servlet 可让路由配置 URI 中的相对路径(删除硬编码的绝对 URI 的限制),以及用于托管 servlet 容器来处理传入请求(而不是在新端口上生成单独的服务器进程)。
要配置,请在您的 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"
您需要在 Maven pom.xml 文件中添加 Spring 扩展依赖关系:
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.spring</artifactId>
<version>${restlet-version}</version>
</dependency>
另外,还需要添加对 restlet maven 软件仓库的依赖关系:
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>http://maven.restlet.org</url>
</repository>