gpt4 book ai didi

java - Camel 路线逻辑/输出期望

转载 作者:行者123 更新时间:2023-11-30 07:37:16 24 4
gpt4 key购买 nike

背景:我正在尝试使用 jaxb 和 Camel 解码 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 对象发送到 ProducerEndpoint,将其编码为 jaxb 数据格式,并使用标有 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>

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

关于java - Camel 路线逻辑/输出期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com