骆驼路线逻辑/输出期望



>背景:我正在尝试使用 jaxb 和骆驼取消编组 xml 文件。我想我很难接受它,因为我不知道确切地知道会发生什么。

例如,我有:

from("file://C:/test.xml").unmarshal(jaxb).to("file://C:/testEnd.java");

有了这个,我希望看到.java文件中解组的结果(即来自 xml 文件元素的参数和值)。但是,当我运行该程序时,.java文件中没有显示任何内容,但我没有收到任何错误。

编组也会发生同样的事情。当我有一个.java文件作为 from 函数,一个.xml文件作为 to 函数时,没有任何反应。

例如,我有:

from("file://C:/test.java").marshal(jaxb).to("file://C:/testEnd.xml");

由此,我希望看到我的注释 java 文件中的值出现在 xml 文件中。

问题:在这两种情况下,我的期望是否正确?还是这个逻辑有问题?

请尝试以下操作:如果您想在代码中以 xml 的形式保存 java 对象,然后再次使用该 xml 检索之前保存的 java 对象的状态,我们会进行编组和取消编组1)编组:将java对象转换为基于XML并将其保存到文件创建一个 producerTemplate 将 java 对象发送到生产者端点,根据 jaxb dataformat 封送它,它将使用标有 XmlRootElement 的 pojo bean 转换为 xml,并在 jaxb 标签中称为 contextPath。

public class ClientEight {
    @Produce(uri="direct:invoice")
    ProducerTemplate template;
public static void main(String rgs[]) throws InterruptedException{
AbstractApplicationContext ctx= new ClassPathXmlApplicationContext("resources/camel-configTen.xml");
        InvoiceXml invoice= new InvoiceXml("fdf3443",3454, 435345.44f, "hfhfddfdg"); //any java object we are passing
    ClientEight client = (ClientEight) ctx.getBean("client");
Object xmlObj= client.template.requestBody(invoice);
        System.out.println(xmlObj);
}

上面是一个客户端代码,你用它来将java对象发送到生产者端点,因为你使用的是template.requestBody,所以你正在取回返回的对象。

<camel:camelContext>
        <camel:dataFormats>
            <!-- path to jaxb annotated class -->
            <camel:jaxb id="invoiceJaxb" contextPath="com.java.bean"
                prettyPrint="true" />
        </camel:dataFormats>
        <camel:route>
            <camel:from uri="direct:invoice" />
            <camel:marshal ref="invoiceJaxb" />
            <camel:log message=" ${body}" />
            <camel:to uri="file://src/resources?fileName=One.xml"/>
        </camel:route>
    </camel:camelContext>

这将是您的骆驼配置文件。希望这有帮助

file组件获取一个目录,并处理此目录中的所有文件。 默认情况下,它不处理文件,您必须使用选项或流组件。

见 http://camel.apache.org/file2.html

仅目录

Camel仅支持配置了 起始目录。因此,目录名称必须是目录。如果你 只想使用单个文件,您可以使用文件名选项, 例如,通过设置文件名=文件名。此外,起始目录 不得包含带有 ${ } 占位符的动态表达式。再次使用 文件名选项,用于指定文件名的动态部分。

最新更新