簡體   English   中英

在OSGi和Maven中使用Hibernate

[英]Using Hibernate with OSGi and Maven

我試圖使用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)(版本> = 1.1.0)(!(版本> = 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。

那行不通。 如果要在OSGi中使用Hibernate,則需要一些捆綁包,這些捆綁包實際上在osgi捆綁包中提供了所需的接口。 對於當前的用例,我建議使用Karaf並安裝Apache Aries的JPA / JTA功能。 Karaf是一個OSGi容器,具有許多已解決的依賴關系和易於安裝的功能。 要將Karaf與JPA一起使用,只需執行以下操作

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

這樣一來,您應該設置為在osgi容器中使用休眠模式。 另一種方法是安裝所有必需的捆綁軟件,以使用hibernate和jpa / jta支持自己運行藍圖osgi。 有關這些功能的列表,請查看相應的功能文件。 Karaf有售

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM