【问题标题】:Apache Camel bean parameter binding issue with Spring DSLSpring DSL 的 Apache Camel bean 参数绑定问题
【发布时间】:2015-10-02 19:10:02
【问题描述】:

我在使用 Apache Camel 和 Spring DSL 时遇到了一个奇怪的问题。这是我的 Spring 定义路线的摘录:

<route>
  <from uri="direct:process-xml"/>
  <setHeader headerName="documentRootOid">
    <method bean="foo.bar.util.TranslatorUtil" method="extractDocumentRootOid"/>
  </setHeader>
  <setHeader headerName="organization">
    <method bean="foo.bar.util.OrgServices" method="getOrganizationByOid(*,${header.documentRootOid})"/>
  </setHeader>
  <setHeader headerName="organizationStyleSheet">
    <method bean="foo.bar.util.TranslatorUtil" method="extractStyleSheetAttributeFromOrganization(*,${header.organization})"/>
  </setHeader>
  <bean beanType="foo.bar.util.Utils" method="transformBodyUsingStyleSheet(*,${header.organizationStyleSheet}"/>
....
</route>

在我发布的最后一行之前一切正常。执行extractDocumentRootOid(Exchange exchange) java 方法,并将结果存储到 documentRootOid 头中。

getOrganizationByOid(Exchange exchange, String oid)java方法被执行,结果存储到organization头中。

extractStyleSheetAttributeFromOrganization(Exchange exchange, Organization organization) java 方法被执行,结果存储到 organizationStyleSheet 头中。

一旦使用transformBodyUsingStyleSheet 方法,事情就会变得很奇怪。这是我的方法声明:

public void transformBodyUsingStyleSheet(Exchange exchange, String styleSheet) 

我在方法的第一行放置了一个调试器,styleSheet 的值始终显示为交换体,而不是我试图传入 (${header.organizationStyleSheet}) 的值。

如果我通过调试器查看标头,我会看到我的 organizationStyleSheet 标头和我期望的值,所以我猜测我的 bean 参数绑定存在问题?有没有其他人遇到过这种情况?

附:我尝试用${exchange} 替换*,但出现了一些错误提示

org.apache.camel.ExpressionEvaluationException: 
  Cannot create/evaluate simple expression: 
    ${exchange} to be bound to parameter at index: 0 on method"

【问题讨论】:

    标签: java spring apache-camel


    【解决方案1】:

    这似乎是由于“transformBodyUsingStyleSheet”方法缺少右括号造成的。我解决了这个问题,它解决了我的问题。

    【讨论】:

    • 这发生在我身上,我花了几个小时试图调试这个问题。也许我们应该问克劳斯·易卜生先生,在这种情况下,绑定 bean 的表达式解析器是否会失败?
    • @BalabanMario 然后用骆驼项目记录一个错误。不用问。
    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2015-01-02
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多