当前位置: 首页 > 知识库问答 >
问题:

将春豆注入骆驼DSL中

江志业
2023-03-14

尝试将春豆添加到骆驼体属性中。类似于:

MVEL: exchange.in.body.limit = uiLimit
<transform>
    <mvel>
        exchange.in.body.limit = uiLimit;
        exchange.in.body;
    </mvel>
</transform>
Spel: request.body.limit = uiLimit

甚至先输入标题:

<setHeader headerName="limit">
  <simple>ref:uiLimit</simple>
</setHeader>

其中uiLimit为:

<bean id="uiLimit" class="java.math.BigInteger">
  <constructor-arg value="${UI_LIMIT} />
</bean>

并且在标头和属性中仍然为空。

任何想法为什么注册表中的 bean 查找对 OSGI 不起作用?(单个捆绑包中的所有豆子/路由)

PS:这在Route中运行良好:

<bean ref="uiLimit" method="toString"/>

共有2个答案

穆俊名
2023-03-14

这种行为的原因是 Exchange 在另一个捆绑包中创建并通过公开的服务:

<osgi:service ref="someHandler" interface="org.apache.camel.Component"/>

Exchange包含来自未声明此bean的另一个捆绑包的Registry/Context。所有表达式语言都与连接到Exchange的注册表/上下文一起工作,而不是与当前budle的注册表一起工作

怀浩大
2023-03-14

< code>transform仅用于转换消息正文。不要改变标题。

如果要更改标头,请使用 setHeader

 类似资料:
  • 我通过扩展DefaultComponent编写了一个camel组件,还实现了endpoint、consumer和producer的关联类。我的producer正在扩展camel DefaultProducer,我想在这个类中注入一个Springbean,这样每当执行一个路由时 我将能够从文件系统中获取文件并将其存储到数据库中。为了将文件存储到数据库中,我有一个由Spring容器实例化的服务类,但是

  • Java-Spring-骆驼 我想用服务列表发起骆驼路线。 想做下面的事情,但是< code>from方法似乎不是一个生产者。如何定义动态生产者?

  • 我有一个Spring Boot2.25.1应用程序,它使用Camel 2.25.1与camel-kafka,一切都正常工作…在我的Kafka消费者中,我需要添加该功能以按需暂停消费,因此我升级到camel 3.18.1,以便我可以使用可暂停功能。升级到3.18.1后,我收到错误FileNotes与类文件TimeoutAwareAggregationStategy.class. 当我打开camel-

  • 我很难让Spring Camel获得注册为Bean的HeaderFilterStrategy类,这样就可以通过Camel路线找到它。我试图注释HeaderFilterStrategy自定义类似乎是徒劳的。。。那么如何注册这个东西,以便在运行时找到它呢? 我有一个驼峰应用程序,其中一条路线使用定制的HeaderFilterStrategy 策略类看起来像: 我注册它与骆驼使用一个简单的注册表: 我在

  • 问题内容: 我是新来的。我试图针对使用JDK 1.7,Spring 3.1,Groovy 1.8.6,Spock 0.6,Maven 3.0.4的独立Java应用程序编写Spock单元测试。基本的hello world spock测试正在运行。但是,当我尝试测试弹簧豆时,我发现它们没有被注入。我使用这里提到的方法。在 when 块内 , businessObjectDao为null 。我该如何工作

  • 我有一个简单的路线,看起来像这样: CXF 配置也非常简单: 此简单路由失败,出现以下异常 这是消息历史记录,表明它在