Apache Camel FOP组件不传播标头

时间:2013-04-12 17:02:03

标签: apache-camel apache-fop eip

FOP组件似乎没有传播标头。在下面的路由中,标头可用于XSLT组件,它确实将它们传递到另一侧。但是在fop之后,他们都走了。

这是一个错误吗?有人可以提出解决方法吗?

<route>
    <from uri="direct:render"/>
    <to uri="xslt:file:{{rootDir}}/Report.xsl"/>
    <to uri="fop:application/pdf"/>
    <log message="Headers after fop ${headers}"/>
</route>

感谢

1 个答案:

答案 0 :(得分:0)

好的,我的解决方法如下:

<route>
    <from uri="direct:render"/>

    <!-- Retain header value in property before it's lost -->
    <setProperty propertyName="lostHeader">
        <simple>${header.lostHeader}</simple>
    </setProperty>

    <to uri="xslt:file:{{rootDir}}/Report.xsl"/>
    <to uri="fop:application/pdf"/>

    <!-- Restore it again -->
    <setHeader headerName="lostHeader">
        <simple>${property.lostHeader}</simple>
    </setHeader>

    <log message="Headers after fop ${headers}"/>

    <!-- Now it's available again here -->
    <to uri="jms:jms/happyQueue"/>
</route>

正如我所说,这是一种解决方法,当然,您必须单独处理所需的任何标题。我可能会在fop组件上记录一个jira bug。