在注入实体管理器之前调用 Bundle Activator

Call Bundle Activator Before Injecting Entity Manager

我有一个持久性包(有一个 Meta-Persistence),它还有一个 Activator class

当部署到 karaf 时,容器开始处理 persistence unit &mapping files 等,然后调用 Activator[= 的 start 方法26=]

我的问题是:有没有办法改变这种行为?让容器先调用方法?

编辑

我需要先调用激活器的原因:

我有一些 mapped entities 依赖于 jackson,而 jackson 本身依赖于 spring,发生的事情是,当 hibernate 加载 entities 时,它到达了一个自制的 class,它在没有 spring context 注入时阻塞。所以捆绑包永远处于 starting 状态

所以我认为一个可能的解决方案是利用 Activator 注入 spring context

谢谢

容器(或更准确地说是 Aries JPA)必须在启动包之前开始处理持久性单元。

原因是Aries JPA在某些情况下需要做load time weaving。这种编织必须在要编织的 类 被任何 bundle 第一次加载之前完成。所以唯一安全的时间是在 bundle 被解析之后。