【问题标题】:Using Hibernate with OSGi and Maven在 OSGi 和 Maven 中使用 Hibernate
【发布时间】:2014-12-01 04:52:27
【问题描述】:

我正在尝试使用 Maven 将 Hibernate 添加为我的 OSGi 包的依赖项。在我的 POM 文件中,我有:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-osgi</artifactId>
    <version>4.3.6.Final</version>
</dependency>

但是,当我运行时出现错误:

org.osgi.framework.BundleException:捆绑包 org.hibernate.core [8] 中未解决的约束:无法解决 8.0:缺少要求 [8.0] osgi.wiring.package; (&(osgi.wiring.package=javax.transaction.xa)(version>=1.1.0)(!(version>=2.0.0))) [原因:无法解决15.0:缺少要求[15.0] osgi .wiring.package; (osgi.wiring.package=javax.enterprise.context)]

所以我为 javax.enterprise.context 添加了另一个依赖项:

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>1.2</version>
</dependency>

解决了上一个错误却导致另一个错误:

自动属性安装:file:///path/to/project/hibernate/target/bundles/javax.inject-1.jar(org.osgi.framework.BundleException:无法创建捆绑对象。 - java.lang.IndexOutOfBoundsException)

现在,我无法解决这个问题,甚至无法找出原因。我使用 Apache Felix。

【问题讨论】:

    标签: java hibernate maven osgi apache-felix


    【解决方案1】:

    那是行不通的。如果你想在 OSGi 中使用 Hibernate,你需要一些在 osgi 包中实际提供所需接口的包。 对于您当前的用例,我建议使用 Karaf 并安装 Apache Aries 的 JPA/JTA 功能。 Karaf 是一个 OSGi 容器,解决了许多依赖项并且易于安装。 要将 Karaf 与 JPA 一起使用,只需执行以下操作

    features:install jpa
    features:install jta
    features:install hibernate
    

    你应该设置为在 osgi 容器中使用休眠。 另一种方法是安装所有必需的包来运行带有休眠和 jpa/jta 支持的蓝图 osgi。有关这些列表,请查看相应的功能文件。可在Karaf 获得

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-20
      • 2015-10-06
      • 2013-10-20
      • 2010-12-31
      • 2016-03-23
      • 2017-04-01
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多