1
4
问题是,每个插件都有自己的类加载器,Hibernate使用反射来查找正确的类。 我在家里有一篇关于这个问题的非常好的文章,但这篇是用德语写的。我会尽力解释你需要做什么。 为了在多个插件上共享数据结构,您必须将其放入一个插件中并启用一个名为 伙伴政策 . 假设您有一个主应用程序插件,它在启动时启动hibernate,这个插件需要“查看”数据结构插件中的类。这样做 主插件将其好友策略设置为“已注册”,数据结构插件将其自身注册为“好友” . 不幸的是,您必须在manifest文件中直接执行这些操作,至少在3.3中,在编辑器中无法执行这些操作。 一旦这个伙伴策略起作用,Hibernate也将启动。 我查了一下我以前的申请表,下面是我是怎么做的。
以下是重要的几行: Hibernate插件de.eye4eye.Hibernate
这两个插件都需要重新导出它们的包,以便主应用程序或中间的任何层都可以使用它们。 希望这有帮助。 |
2
1
只是为了完成这一切。 EclipseLink可以在EclipseRCP应用程序中用作JPA提供者,而不是使用Hibernate。EclipseLink是Oracle的前TopLink,被选为JPA2的参考实现。 RCP的要点是,EclipseLink作为OSGI捆绑包(org.eclipse.persistence.jpa)提供,因此它可以从另一个插件加载类,而无需额外的好友策略。
在这个场景中,数据插件中的JPA提供者能够从模型插件加载类,而无需伙伴策略。 *注意,演示者不依赖于任何JPA包,因为它是由DAOs封装的(仍然使用它们的主要原因) 链接
|