【发布时间】:2010-11-19 07:34:47
【问题描述】:
我对 OSGi 中的类可见性感到困惑。我正在运行 Apache Felix 并加载以下包:
- 来自 eclipselink 的
antlr、asm、jpa和core捆绑包 -
javax.persistence1.99 的 OSGi jar - 带有
com.mysql.jdbc驱动程序的OSGi jar - 我自己的包,其中包含带注释的实体类和
persistence.xml - 我自己的另一个包,调用
Persistence.createEntityManagerFactory(String, Map)
现在,我很困惑的是哪个包必须能够看到 MySQL 驱动程序。我认为这将是创建 EntityManagerFactory 的包,但是当我在该清单中导入时出现 ClassNotFound 错误。接下来,我尝试从 eclipselink jpa 包的清单中导入它,但又出错了。只有当我从包含持久性单元(实体类和persistence.xml)的包的清单中导入它时,它才能工作。
所以,看起来数据库驱动程序是由类加载器查找 PU 包的,但这对我来说没有意义。怎么回事?
我似乎无法为此找到一个简单的文档。 These slides 给出了一些提示,但并不全面。
【问题讨论】:
标签: jpa osgi classloader eclipselink apache-felix