首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flyway与JPA + OSGi的集成

Flyway与JPA + OSGi的集成
EN

Stack Overflow用户
提问于 2018-05-28 19:51:34
回答 1查看 271关注 0票数 0

在我当前的项目中,我已经将JPA集成到了OSGi独立应用程序中。对于集成,我采用了以下OSGi规范实现:

  • OSGi R7 Platform (Equinox 3.13.0)
  • JPA 2.2 (Eclipselink 2.7.1)
  • JPA容器
    • Apache容器2.7.0

    <代码>H19Apache Aries JPA Eclipselink适配器JPA

  • JDBC服务(PAX JDBC MariaDB 1.3.0)

这种集成工作得很完美。

go的下一步- Flyway集成。数据库迁移脚本应该直接打包到Persistence Bundle中。现在,我想在创建DataSource时触发迁移,就在注册EntityManagerFactory和EntityManagerFactoryBuilder服务之前。此时,我应该可以访问Persistence Bundle类加载器,并且应该有一个初始化的数据源。我找到的唯一解决方案是重构Apache Areas容器,并将一个Flyway迁移调用放入AriesEntityManagerFactoryBuilder.dataSourceReady.Flyway触发器存储为JPA属性中的位置,如下所示:

代码语言:javascript
复制
    <property name="org.flywaydb.Locations" value="classpath:com/hrrm/budget/domain/account/migrations"/>

这个解决方案在调用的最佳时机放置是正确的。但是它不符合Apache服务规范1.1,并作为一个钩子实现到OSGi JPA容器中。

有没有其他更完美和规范确认的解决方案来将Flyway集成到我的项目中?

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 20:17:08

要挂接DataSource创建,您可以使用pax-jdbc docs中描述的PreHook服务。

你可以找到一个example here

代码语言:javascript
复制
@Component(property="name=persondb")
public class Migrator implements PreHook {
    public void prepare(DataSource ds) throws SQLException {
        // Put your migration calls here
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档