使用代码在OSGi环境中增强运行时

使用代码在OSGi环境中增强运行时,osgi,openjpa,osgi-bundle,persistence.xml,openjpa-maven-plugin,Osgi,Openjpa,Osgi Bundle,Persistence.xml,Openjpa Maven Plugin,问题: 1.JPA类/实体在Bundle 1和Bundle 2中使用相同的持久性单元 2.Bundle 3正在尝试访问Bundle 1和Bundle 2中的类(用于DB API抽象的包装器API)。 3.运行时增强不起作用 因此,我计划使用代码增强JPA实体,在bundle 3出现之前,bundle 1中的这些实体可以得到增强。 我计划这样做,因为运行时增强没有完成,捆绑包3出现了。这会导致DB API(Bundle 3 API)失败,因为没有创建表。我们在以前的openjpa和OSGi项目中遇

问题: 1.JPA类/实体在Bundle 1和Bundle 2中使用相同的持久性单元 2.Bundle 3正在尝试访问Bundle 1和Bundle 2中的类(用于DB API抽象的包装器API)。 3.运行时增强不起作用

因此,我计划使用代码增强JPA实体,在bundle 3出现之前,bundle 1中的这些实体可以得到增强。
我计划这样做,因为运行时增强没有完成,捆绑包3出现了。这会导致DB API(Bundle 3 API)失败,因为没有创建表。

我们在以前的openjpa和OSGi项目中遇到了同样的问题。幸运的是,OpenJPA支持编译时增强,这可以通过OpenJPA maven插件完成,如下所述:


还有一个EclipseMaven连接器,它支持IDE内部的运行时增强功能,如果您想使用远程部署,它会非常方便

为什么不使用编译时增强?OpenJPA可以为您做到这一点。在我看来,运行时字节码操作是一件非常邪恶的事情,应该避免。