2017-02-08 8 views
1

私はJPAをインストールし、Karaf 4.0.8コンテナに持続性ユニットを開始するために戦っていました。私はインストールしました:カラフと持続ユニット:見つからない依存関係:JpaTemplate

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 

永続ユニットを持つ私のバンドルが起動しますが、サービスはエクスポートされません。

私のパーシスタンス・バンドルからエクスポートされなければならない
<reference id="jpaTemplate" interface="org.apache.aries.jpa.template.JpaTemplate" filter="(osgi.unit.name=officialUnit)" /> 

が、それはありません:それを使用してJpaTemplateをインポートバンドルは、サービスをインポートできません。 'diag'は永続性バンドルに問題はありません。

パーシスタンスユニットが正しく開始されていない理由をデバッグするにはどうすればよいですか?

私のpersistence.xmlは、次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 

    <persistence-unit name="officialUnit" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

     <!-- Only used when transaction-type=JTA --> 
     <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=demo-db)</jta-data-source> 

     <!-- Only used when transaction-type=RESOURCE_LOCAL --> 
     <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=demo-db)</non-jta-data-source> 

     <class>example.entity.SomeEntity</class>  

     <exclude-unlisted-classes>true</exclude-unlisted-classes> 
     <properties> 
      <property name="eclipselink.ddl-generation" value="none" /> 
      <property name="eclipselink.ddl-generation.output-mode" value="sql-script" /> 
     </properties> 

    </persistence-unit> 
</persistence> 

設定ファイルetc/org.ops4j.datasource-sqlitetest.cfg

osgi.jdbc.driver.name=sqlite 
url=jdbc:sqlite:D:/data/db/demo.db 
dataSourceName=demo-db 

と永続バンドルの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 

永続ユニットが正常でしたEclipseでOSGiフレームワークを使用して起動形。

+1

あなたがログとあなたのpersistence.xmlの内容を与えることができますか? –

答えて

2

多くの可動部分があるため、Jpaはデバッグするのが簡単ではありません。最初のステップは、永続性バンドルがaries jpaコンテナによってまったく見つかったかどうかをチェックすることです。

まず、あなたのPersitenceユニットバンドルのマニフェストにMeta-Persistenceヘッダーがあり、META-INF/persistence.xmlのようなpersistence.xmlを参照しているかどうかを確認します。

これがある場合は、jpaコンテナがバンドルをピックアップして、persistence.xmlを解析する必要があります。

次は、PersistenceProviderサービスが存在し、DataSourceが存在するかどうか(DataSourceを使用する場合)です。

あなたが設定を使用してデータソースを設定する場合は、必要に応じPAX-JDBCの機能をインストールすることを忘れないでください:

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

最初のもの:はい - 私の編集を参照してください> 次:設定ファイルが読み込まれ、WebConsoleに表示されます。私のバンドルはEclipse OSGi Frameworkの起動設定で動作します。今、私はKarafの実行時環境を設定しようとしています。 –

+0

pax jdbcのデータソース構成を使用しています。つまり、機能pax-jdbc-configおよびpax-jdbc-sqliteもインストールする必要があります。その後、ds configが読み込まれているかどうかを確認し、DataSourceが作成されているかどうかを確認します。 –

+0

ありがとうございます。私の場合、pax-jdbc-configとpax-jdbc-sqliteについてのコメントを記入してください。 –

関連する問題