【问题标题】:OSGi and Hibernate - not suitable driverOSGi 和 Hibernate - 不适合的驱动程序
【发布时间】:2012-10-28 19:28:52
【问题描述】:

我遇到了以下情况。 我使用Apache Felix 作为OSGi 服务实现和Apache Karaf 作为OSGi 容器。 karaf 中有一个捆绑包,它应该通过休眠将一些数据保存到数据库中,但我总是得到一个 SQLException: No Suitable Driver found. 我将mysql-connector-bundle 部署到karaf。 在我看来,问题是休眠是否导入mysql-driver-packages 或我应该映射的类。 但我不知道如何解决这个问题。我对 Eclipse rcp 很熟悉,其中 buddy-policy 修复了此类问题,felixkaraf 是否有针对此问题的最佳实践?

【问题讨论】:

  • 您确定 mysql-connector-bundle 捆绑包正确安装到容器中吗?
  • 是的,我使用了 mysql-connector-java,它被标记为活动的。
  • 你看到那些解决方案stackoverflow.com/questions/5982675/…了吗?
  • 是的,但它们不适合。检查了我的 hibernate-cfg 两次,没有错误。
  • 请附上 mysql-connector-bundle 的清单以及与 DB 通信的捆绑包。

标签: mysql hibernate osgi apache-felix apache-karaf


【解决方案1】:

你使用什么版本的休眠?只有从 Hibernate 4 开始,hibernate 才知道 OSGi 类加载器,但它仍然没有完整的 OSGi 支持。参见例如https://hibernate.onjira.com/browse/HHH-7527,计划用于 Hibernate 4.2。

我们使用 Gemini JPA 和 eclipselink 作为 OSGi 中的 JPA 提供程序。

在 karaf 生态系统中,有 Aries JPA,主要用于 OpenJPA。见Which JPA providers are supported by Apache Aries Managed JPA?

【讨论】:

    【解决方案2】:

    Hibernate 无法访问来自其他捆绑软件的数据和类(至少在 3.x 版本中;我不知道版本 4)。只有当所有(使用休眠、pojos、映射文件、所有库的方法)都在同一个包中时,它才能轻松工作。它无法访问其他包中的资源。

    另请参阅my answer in this thread

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2011-10-21
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      相关资源
      最近更新 更多