我正在编写一个小型 OSGi 应用程序用于学习目的。 我成功设置了 Gemini JPA 和 DBAccess 服务来使用 JPA,并且只要我使用 persistence.xml 来配置我的持久性单元,它就可以正常工作。
然后我偶然发现了This Example.在运行时提供持久性单元配置似乎是一个非常棒的功能。除非它不起作用。我尝试了确切的代码(对于独立配置),它被执行,但框架没有任何变化。据我了解,难道不应该有一个新的服务提供新的持久性单元吗?
我正在使用 Equinox 框架,gemini 和 dbaccess 的所有必需 bundle 均已安装并运行,并且 ConfigurationAdmin bundle (org.eclipse.equinox.cm
) 已安装并运行我的代码被执行。
我像这样访问配置管理:
ServiceReference<ConfigurationAdmin> s = context
.getServiceReference(ConfigurationAdmin.class);
ConfigurationAdmin admin = context.getService(s);
最佳答案
可能是启动顺序问题:必须在查找数据源以实现持久性之前创建配置。尝试重新启动持久性 bundle 或将持久性 bundle 的启动级别更改为更高级别,以便稍后启动。
此外,安装 Felix web console 可能会很方便查看您的配置数据是否确实已注册到配置管理器。
关于java - OSGi 和 Gemini JPA : Using the Configuration Admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260844/