CamelContext 必须指定在:HttpMessage@0x36ed8347 [英] CamelContext must be specified on: HttpMessage@0x36ed8347

查看:35
本文介绍了CamelContext 必须指定在:HttpMessage@0x36ed8347的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 spring boot 应用程序中使用camelServlet、camel kafka,我收到这个我无法理解的错误

I am using camelServlet, camel kafka in a spring boot app, I am getting this error which I am not able to understand

当我尝试调用配置为 REST DSL 路由的 get 端点时,出现以下错误

when I try to call a get endpoint which is configured as REST DSL route I am getting the below error

路线:

rest().get("/getBatchID")
                .to("direct:getBatchID");

我已经定义了骆驼servlet bean如下:

I have defined the camel servlet bean as below :

  @Bean
    public ServletRegistrationBean camelServletRegistrationBean() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new CamelHttpTransportServlet(), "/camel/*");
        registration.setName("CamelServlet");
        return registration;

堆栈跟踪:

2018-11-25 23:22:10,066|INFO |http-nio-9000-exec-2|o.a.c.c.s.CamelHttpTransportServlet - Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=]
2018-11-25 23:22:10,183|ERROR|http-nio-9000-exec-2|o.a.c.c.C.[.[.[.[CamelServlet] - Servlet.service() for servlet [CamelServlet] in context with path [] threw exception
java.lang.IllegalArgumentException: CamelContext must be specified on: HttpMessage@0x36ed8347
    at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:342)
    at org.apache.camel.impl.DefaultMessage.createHeaders(DefaultMessage.java:254)
    at org.apache.camel.impl.DefaultMessage.setHeader(DefaultMessage.java:171)
    at org.apache.camel.http.common.HttpMessage.<init>(HttpMessage.java:41)
    at org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:169)
    at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:74)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

我是否需要在发出 get 请求时在标头中添加camelContext ??

Do I need to add camelContext in the header while making a get request ??

推荐答案

出现这个问题是因为 HTTPMessage 扩展了 DefaultMessage,它存在于同一个包中,有超过 1 个 jar 依赖项.

This is the problem occurs because HTTPMessage extends DefaultMessage which exists in same package in more then 1 jar dependency.

class org.apache.camel.impl.DefaultMessage 存在于 2 个 jar 中.

class org.apache.camel.impl.DefaultMessage exists in 2 jars.

  1. Active-MQ 全部
  2. 骆驼核 JAR.

解决方案是您使用 activemq-client jar 或调整您的 .MF 文件

Solution is you use activemq-client jar or adjust your .MF file

这篇关于CamelContext 必须指定在:HttpMessage@0x36ed8347的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆