2017-02-08 9 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 

영구 장치는 성공적이었다 이클립스에서 OSGi 프레임 워크를 사용하여 시작했다. 형상.

+1

당신이 로그와 당신의 persistence.xml의 내용을 줄 수 있습니까? –

답변

2

많은 움직이는 부분이 있기 때문에 Jpa는 디버그하는 것이 쉽지 않습니다. 첫 번째 단계는 aries jpa 컨테이너에서 지속성 번들을 찾았는지 확인하는 것입니다.

먼저 확인할 단위 항목은 Meta-Persistence 헤더가있는 Persitence Unit 번들의 Manifest가 META-INF/persistence.xml과 같은 persistence.xml을 가리키는 지 여부입니다.

이 경우 jpa 컨테이너는 번들을 선택하고 persistence.xml을 구문 분석해야합니다.

다음으로 확인할 사항은 PersistenceProvider 서비스가 있고 데이터 소스가있는 경우 (데이터 소스를 사용하는 경우)입니다.

그런 다음 필요한 인원-JDBC 기능을 설치하는 것을 잊지 않는 설정을 사용하여 데이터 소스를 구성하는 경우 :

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

첫 번째 일 : 예 - 내 편집 참조> 다음 : 구성 파일을 읽었습니다. WebConsole에서 볼 수 있습니다. 내 번들은 Eclipse OSGi 프레임 워크 실행 구성에서 작동합니다. 이제 Karaf에 대한 런타임 환경을 구성하려고합니다. –

+0

pax jdbc의 데이터 소스 구성을 사용 중입니다. 즉, pax-jdbc-config 및 pax-jdbc-sqlite 기능을 설치해야합니다. 그 후 ds config가 읽혀 졌는지 확인하고 DataSource가 만들어 졌는지 확인하십시오. –

+0

고맙습니다. 필자의 경우 빠진 부분이므로 pax-jdbc-config 및 pax-jdbc-sqlite에 대한 의견을 적어주십시오. –