1

我是 Camel 的新手,并且一直在尝试使用 Hibernate 轮询 XML 文件的目录并写入数据库。为了了解所有内容如何链接在一起,我想在将其移动到 Spring xml 配置之前使用直接的 Java DSL 将所有内容连接起来。我使用 bean 和我自己的方法让它完全按预期工作:

class MyRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("file://test")
        .bean(parser, "parseXml")
        .bean(parser, "store");
    }
}

现在我想试试内置的 JPA 生产者,所以我把它改成了:

    class MyRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("file://test")
        .bean(parser, "parseXml")
        .to("jpa:soccerfeed?persistenceUnit=sportsstats");
    }
}

但我得到了错误:

引起:org.hibernate.HibernateException:当没有可用的连接时必须设置“hibernate.dialect”

我试图将我的 CamelContext 与我的 persistence.properties 文件链接起来,该文件指定了我的 hibernate.dialect (适用于我的 bean):

    public void setUp() throws Exception {

    final Properties persistenceProperties = new Properties();
    InputStream is = null;
    try {
        is = getClass().getClassLoader().getResourceAsStream("persistence.properties");
        persistenceProperties.load(is);
    } finally {
        if (is != null) {
            try {
                is.close();
            } catch (IOException ignored) {

            }
        }
    }

    entityManagerFactory = Persistence.createEntityManagerFactory("sportsstats", persistenceProperties);
    context = JAXBContext.newInstance("sportsstats");
}

    private void run() throws Exception {

            camelContext = new DefaultCamelContext();

            JpaComponent jpa = new JpaComponent();
    jpa.setEntityManagerFactory(entityManagerFactory);
    jpa.setCamelContext(camelContext);
    Endpoint jpaEndpoint = jpa.createEndpoint("jpa:soccerfeed");

    camelContext.addEndpoint("jpa:soccerfeed", jpaEndpoint);

            // Add some configuration by hand ...
            camelContext.addRoutes(new MyRouteBuilder());

            // Now everything is set up - lets start the context
            camelContext.start();

            // keep alive
            while(true) {
                Thread.sleep(10000);
            }
}

如何让我在 Camel 中的 JPA 端点获取我在 persistence.properties 中的设置?

编辑:似乎替代方法是将属性从我的属性文件移动到我的 persistence.xml 文件中作为元素。但是,如果可能的话,我想避免这样做,因为它会使开发/产品版本的维护变得更加困难。有没有办法将 persistence.xml 链接到属性文件?(例如 <properties file="persistence.properties" /> 什么的?)

4

0 回答 0