在注册表中找不到数据格式 - Camel

时间:2016-02-03 18:51:55

标签: java maven jaxb apache-camel

我有一个maven项目,我正在尝试使用jaxb和camel使用命令封送文件:

inoremap <C-s> <Esc>:update<CR>i

当我运行项目时,出现以下错误:

from("file://...").marshal("myDataFormat").to("file://...");

首先,有人知道“注册表”是什么吗?我搜索了谷歌,但找不到任何东西。我猜它可能是camel-context文件的另一个名字。其次,如何使用驼峰注册数据格式?我可以使用默认数据格式吗?

很抱歉,如果答案很简单,但我对骆驼比较陌生,而我能找到的在线文档并没有太大帮助。

2 个答案:

答案 0 :(得分:3)

你应该使用这样的东西

DataFormat jaxb = new JaxbDataFormat("com.acme.model");

from("activemq:My.Queue").
      unmarshal(jaxb).
      to("mqseries:Another.Queue");

换句话说,首先创建dataformat对象,然后尝试解组它。

答案 1 :(得分:1)

关于Camel注册管理机构http://camel.apache.org/registry.html

简单来说,测试任务简单注册表就可以了。

Spring 蓝图适用于更复杂的任务。 http://camel.apache.org/using-osgi-blueprint-with-camel.htmlhttp://camel.apache.org/spring.htmlhttp://camel.apache.org/data-format.html(请参阅下面的Spring示例)

蓝图上下文示例,包含一些数据格式。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint
    xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
    xsi:schemaLocation=
            "http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <camelContext id="camelTest"
                  xmlns="http://camel.apache.org/schema/blueprint" >
        <propertyPlaceholder id="properties" location="blueprint:server.placeholder"/>
        <package>camel.test</package>

        <dataFormats>
            <beanio id="cashWarrantFormat" mapping="beanio/mapping.xml" streamName="CashWarrant" encoding="UTF-8"/>
            <beanio id="metaDocFormat" mapping="beanio/mapping.xml" streamName="MetaDoc" encoding="UTF-8"/>
            <beanio id="accStatementFormat" mapping="beanio/mapping.xml" streamName="AccStatement" encoding="UTF-8"/>
            <beanio id="advanceReport" mapping="beanio/mapping.xml" streamName="AdvanceReport" encoding="UTF-8"/>
        </dataFormats>
    </camelContext>

    <bean id="javaUuidGenerator" class="org.apache.camel.impl.JavaUuidGenerator"/>
</blueprint>

简单的注册表示例。

public static SimpleRegistry createRegistry() {
    SimpleRegistry simpleRegistry = new SimpleRegistry();
    simpleRegistry.put("transformerFactory", com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.class);
    simpleRegistry.put("javaUuidGenerator", org.apache.camel.impl.JavaUuidGenerator.class);
    return simpleRegistry;
}

public void createCamelContext() {
    logger.info("Create Camel context");
    simpleRegistry = createRegistry();
    defaultCamelContext = new DefaultCamelContext(simpleRegistry);
}