【问题标题】:OSGi and Gemini JPA: Using the Configuration AdminOSGi 和 Gemini JPA:使用配置管理
【发布时间】:2013-11-28 08:14:50
【问题描述】:

我正在编写一个用于学习目的的小型 OSGi 应用程序。 我成功设置 Gemini JPA 和 DBAccess Services 以使用 JPA,只要我使用 persistence.xml 配置我的持久性单元,它就可以正常工作。

然后我偶然发现This Example. 在运行时提供持久性单元配置似乎是一个非常棒的功能。除了它不工作。我尝试了那个确切的代码(用于独立配置),它被执行了,但框架中没有任何变化。据我了解,不应该有一个新的服务来提供新的 Persistence Unit 吗?

我正在使用 Equinox 框架,gemini 和 dbaccess 的所有必要包都已安装并运行,并且 ConfigurationAdmin 包 (org.eclipse.equinox.cm) 已安装并在我的代码执行时运行。

我像这样访问配置管理员:

ServiceReference<ConfigurationAdmin> s = context
            .getServiceReference(ConfigurationAdmin.class);
ConfigurationAdmin admin = context.getService(s);

【问题讨论】:

    标签: java configuration osgi eclipse-gemini


    【解决方案1】:

    可能是启动顺序问题:必须在查找数据源以实现持久性之前创建配置。尝试重新启动持久性捆绑包或将持久性捆绑包的启动级别更改为更高级别,以便稍后启动。

    此外,安装Felix web console 看看你的配置数据是否确实在配置管理器中注册可能会很方便。

    【讨论】:

    • 两者都是正确的。我可以在 web 控制台中看到注册的配置,我也看不到这个配置的新 Entitymanager-factory 服务,如问题中所述
    • 也许您应该发布更多关于确切设置和您设置的属性的详细信息。我认为您仍然需要告诉 JPA 实现需要设置捆绑包以导出 EMF,因为这是您目前似乎缺少的。
    • 是的,我认为可能是这种情况,但我不知道该怎么做。教程中明确指出...a standalone configuration is used only when there is no persistence descriptor in the persistence bundle
    • 根据你提到的文档,你必须指定gemini.jpa.punit.bsn属性。你做对了吗?这是我看到 JPA 实现完全忽略捆绑包的唯一明显原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多