【发布时间】:2020-11-15 07:50:21
【问题描述】:
我有一个带有 spring-boot 2.x 和 camel 2.25 的项目。它有不同的骆驼路线以及很少的 REST 消费者路线。到目前为止一切都很好。
现在我添加了一些带有一些端点的普通 spring-boot @RestController 类。但这些都不起作用(抛出 404)。
当我调查时发现,每个请求都来自 CamelServlet,它完全不知道基于 Spring 的普通 @RestController 端点(但只知道 Camel REST 消费者路由端点)。因此,仅在 @RestController 端点引发此错误,而 Camel REST 端点仍在工作。
下面是我的配置,
spring:
application:
name: gateway
main:
web-application-type: SERVLET
server:
servlet:
context-path: /gateway
port: 8080
camel:
springboot:
name: gateway
component:
servlet:
mapping:
enabled: true
context-path: /*
mail:
basic-property-binding: true
下面是我的 POM
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-servlet-starter</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mail-starter</artifactId>
</dependency>
我做错了什么吗?有什么建议吗?提前致谢。
【问题讨论】:
-
Bhushan 的回答在这种情况下是合适的,但为了结束对话,我想指出另一个选项,将骆驼路线与@Clause 提到的非骆驼应用程序集成易卜生在博客中(我失去了链接)。对于任何非骆驼应用程序,我们可以使用 Camel 的 FluentProducerTemplate,它可以在 Spring Rest 控制器类中的任何位置使用 EndpointInject 注释自动装配,并可用于将骆驼交换发送到任何骆驼端点。
标签: spring-boot apache-camel camel-rest