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

标签 java jaxb apache-camel marshalling unmarshalling

背景: 我正在尝试使用 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/

相关文章:

java - Java 中的内联注释 :/** opposed to/*?

error-handling - Camel 交易错误

java - 自动滚动 JavaFX TextFlow

java - 使用java将docx转换为doc

maven - cxf-codegen-plugin 排除 XSD 文件

java - 什么是 .episode 文件..?

java - 使用 JAXB 创建空对象解码空元素

java - Apache Camel bean 参数与 Spring DSL 的绑定(bind)问题

java - 保证将请求发送到 Web 服务

java - com.sun.istack.SAXException2 和 javax.xml.bind.JAXBException 异常