[英]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.