Spring boot 2.x with Camel 2.25:特定于Spring的端点不起作用



我有一个带有spring-boot2.x和camel2.25的项目。它有不同的骆驼路线,很少有REST消费者路线。到目前为止一切都很好。

现在,我添加了一些带有一些端点的普通spring-boot@RestController类。但这些都不起作用(投掷404(。

当我调查时,我发现每个请求都会到达CamelServlet,它完全不知道基于spring的正常@RestController端点(但只知道CamelREST消费者路由端点(。因此,仅对@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>

我做错了什么吗?有什么建议吗?提前谢谢。

这是因为您设置了上下文路径://*pattern意味着camel将在spring-servlet调度器处理它之前拦截它(因为该路径是用camel注册的(,所以如果您想处理@Restcontroller,则需要为camel定义一个单独的上下文路径,例如:context-path:coal-api//strong>*mode,现在,camel将注册camel-api基本路由,如果模式与camel-apiURL不同,它将由spring-boot 处理

@Bean
ServletRegistrationBean servletRegistrationBean() {
ServletRegistrationBean servlet = new ServletRegistrationBean
(new CamelHttpTransportServlet(), "camel-api/*");
servlet.setName("CamelServlet");
return servlet;
}

或使用属性进行配置。

相关内容

  • 没有找到相关文章

最新更新