301.7. 示例
从 Camel 2.7 开始,在 Spring web 应用程序中更轻松地使用 Servlet。详情请查看 Servlet Tomcat 示例。
在这个示例中,我们定义了一个在 http://localhost:8080/camel/services/hello 公开 HTTP 服务的路由。
首先,您需要通过普通的 Web 容器或 OSGi 服务发布 CamelHttpTransportServlet。使用 Web.xml
文件发布 CamelHttpTransportServlet,如下所示:
然后,您可以按照以下方式定义路由:
指定 camel-servlet 端点的相对路径
由于我们通过公布的 servlet 绑定 HTTP 传输,因此我们不知道 servlet 的应用上下文路径,因此 camel-servlet
端点会使用相对路径来指定端点的 URL。客户端可以通过 servlet 发布地址访问 camel-servlet
端点: ("http://localhost:8080/camel/services")+ RELATIVE_PATH ("/hello")
301.7.1. 使用 Spring 3.x 时的示例 复制链接链接已复制到粘贴板!
请参阅 Servlet Tomcat 示例。
301.7.2. 使用 Spring 2.x 时的示例 复制链接链接已复制到粘贴板!
当在 Camel/Spring 应用程序中使用 Servlet 组件时,通常需要在 Servlet 组件启动后加载 Spring ApplicationContext。这可以通过使用 Spring 的 ContextLoaderServlet
而不是 ContextLoaderListener
来完成。在这种情况下,您需要在 CamelHttpTransportServlet 后启动 ContextLoaderServlet
,如下所示:
301.7.3. 使用 OSGi 时的示例 复制链接链接已复制到粘贴板!
在 Camel 2.6.0 中,您可以使用蓝图发布 CamelHttpTransportServlet,如下所示:
然后,在您的 Camel 路由中使用该服务,如下所示:
对于 Camel 2.6 之前的版本,您可以使用 Activator
在 OSGi 平台上发布 CamelHttpTransportServlet :
301.7.4. Spring-Boot 使用 复制链接链接已复制到粘贴板!
从 Camel 2.19.0 开始,camel-servlet-starter 库会自动绑定 /camel
Attr 上下文路径下的所有其余端点。下表总结了 camel-servlet-starter 库中可用的额外配置属性。也可以禁用 Camel servlet 的自动映射。
spring-Boot Property | default | 描述 |
---|---|---|
camel.component.servlet.mapping.enabled |
| 启用 servlet 组件的自动映射到 Spring web 上下文 |
camel.component.servlet.mapping.context-path |
| servlet 组件用于自动映射的上下文路径 |
camel.component.servlet.mapping.servlet-name |
| Camel servlet 的名称 |