Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karaf和持久化单元:缺少依赖项:JpaTemplate_Jpa_Osgi_Eclipselink_Karaf - Fatal编程技术网

Karaf和持久化单元:缺少依赖项:JpaTemplate

Karaf和持久化单元:缺少依赖项:JpaTemplate,jpa,osgi,eclipselink,karaf,Jpa,Osgi,Eclipselink,Karaf,我当时正在努力在Karaf4.0.8容器上安装JPA并启动持久化单元。我安装了: feature:install webconsole feature:repo-add mvn:org.apache.aries.jpa/jpa-features/2.5.0/xml/features feature:install jpa/2.5.0 feature:install transaction-api/1.2.0 feature:install transaction feature:install

我当时正在努力在Karaf4.0.8容器上安装JPA并启动持久化单元。我安装了:

feature:install webconsole
feature:repo-add mvn:org.apache.aries.jpa/jpa-features/2.5.0/xml/features
feature:install jpa/2.5.0
feature:install transaction-api/1.2.0
feature:install transaction
feature:install eclipselink
我的持久性单元包启动了,但它不导出任何服务。使用它并导入JpaTemplate的捆绑包无法导入服务:

<reference id="jpaTemplate" interface="org.apache.aries.jpa.template.JpaTemplate" filter="(osgi.unit.name=officialUnit)" />
持久性捆绑包的
MANIFEST.MF

Manifest-Version: 1.0
Bnd-LastModified: 1486560203107
Build-Jdk: 1.8.0_121
Bundle-Description: Persistence
Bundle-ManifestVersion: 2
Bundle-Name: example.persistence.impl
Bundle-SymbolicName: example.persistence.impl
Bundle-Version: 1.0.0.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
Export-Package: example.persistence.impl;version="1.0.0";uses:="javax.pe
 rsistence,javax.xml.bind.annotation"
Import-Package: javax.persistence;version="[2.1,3)",javax.xml.bind.annot
 ation
Meta-Persistence: META-INF/persistence.xml
Originally-Created-By: Apache Maven Bundle Plugin
Provide-Capability: osgi.service;effective:=active;objectClass="org.apac
 he.aries.jpa.supplier.EmSupplier";osgi.unit.name=officialUnit,osgi.serv
 ice;effective:=active;objectClass="javax.persistence.EntityManagerFacto
 ry";osgi.unit.name=officialUnit,osgi.service;effective:=active;objectCl
 ass="org.apache.aries.jpa.template.JpaTemplate";osgi.unit.name=official
 Unit,osgi.service;effective:=active;objectClass="javax.persistence.Enti
 tyManager";osgi.unit.name=officialUnit
Require-Capability: osgi.service;effective:=active;objectClass="javax.sq
 l.DataSource";filter:="(osgi.jndi.service.name=demo-db)",osgi.service;e
 ffective:=active;objectClass="javax.persistence.spi.PersistenceProvider
 ";javax.persistence.provider="org.eclipse.persistence.jpa.PersistencePr
 ovider",osgi.extender;osgi.extender="aries.jpa",osgi.service;effective:
 =active;objectClass="javax.transaction.TransactionManager",osgi.ee;filt
 er:="(&(osgi.ee=JavaSE)(version=1.8))"
Tool: Bnd-3.2.0.201605172007

使用OSGi框架启动配置在Eclipse中成功启动了持久化单元。

Jpa调试起来并不简单,因为有许多移动部件。第一步是检查aries jpa容器是否找到了持久性包

首先要检查Persistence单元包的清单是否有Meta-Persistence头并指向Persistence.xml,如:Meta-INF/Persistence.xml

如果您有这个包,那么jpa容器应该拿起包并解析persistence.xml

接下来要检查的是PersistenceProvider服务是否存在以及数据源是否存在(如果使用数据源)

如果使用配置配置数据源,请不要忘记安装必要的pax jdbc功能:

feature:repo-add pax-jdbc 1.0.0
feature:install pax-jdbc-config pax-jdbc-sqlite

您能给出persistence.xml的日志和内容吗?第一件事:是-查看我的编辑>下一步:配置文件已读取,我在WebConsole中看到它。我的包在EclipseOSGi框架启动配置中工作。现在我尝试为Karaf配置运行时环境,您使用的是来自PaxJDBC的数据源配置。这意味着您还需要安装pax jdbc config和pax jdbc sqlite的特性。然后检查ds配置是否被读取,以及是否创建了数据源。谢谢。请包括您对paxjdbc-config和paxjdbc-sqlite的评论,因为这是我的案例中缺少的部分。
Manifest-Version: 1.0
Bnd-LastModified: 1486560203107
Build-Jdk: 1.8.0_121
Bundle-Description: Persistence
Bundle-ManifestVersion: 2
Bundle-Name: example.persistence.impl
Bundle-SymbolicName: example.persistence.impl
Bundle-Version: 1.0.0.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
Export-Package: example.persistence.impl;version="1.0.0";uses:="javax.pe
 rsistence,javax.xml.bind.annotation"
Import-Package: javax.persistence;version="[2.1,3)",javax.xml.bind.annot
 ation
Meta-Persistence: META-INF/persistence.xml
Originally-Created-By: Apache Maven Bundle Plugin
Provide-Capability: osgi.service;effective:=active;objectClass="org.apac
 he.aries.jpa.supplier.EmSupplier";osgi.unit.name=officialUnit,osgi.serv
 ice;effective:=active;objectClass="javax.persistence.EntityManagerFacto
 ry";osgi.unit.name=officialUnit,osgi.service;effective:=active;objectCl
 ass="org.apache.aries.jpa.template.JpaTemplate";osgi.unit.name=official
 Unit,osgi.service;effective:=active;objectClass="javax.persistence.Enti
 tyManager";osgi.unit.name=officialUnit
Require-Capability: osgi.service;effective:=active;objectClass="javax.sq
 l.DataSource";filter:="(osgi.jndi.service.name=demo-db)",osgi.service;e
 ffective:=active;objectClass="javax.persistence.spi.PersistenceProvider
 ";javax.persistence.provider="org.eclipse.persistence.jpa.PersistencePr
 ovider",osgi.extender;osgi.extender="aries.jpa",osgi.service;effective:
 =active;objectClass="javax.transaction.TransactionManager",osgi.ee;filt
 er:="(&(osgi.ee=JavaSE)(version=1.8))"
Tool: Bnd-3.2.0.201605172007
feature:repo-add pax-jdbc 1.0.0
feature:install pax-jdbc-config pax-jdbc-sqlite