2

JPA実装(KARAF内)としてEclipseLinkを使用しています。次のjarが使用されています:-

install -s mvn:org.eclipse.persistence/org.eclipse.persistence.antlr/2.5.0
install -s mvn:org.eclipse.persistence/org.eclipse.persistence.asm/2.5.0
install -s mvn:org.eclipse.persistence/org.eclipse.persistence.core/2.5.0
install -s mvn:org.apache.geronimo.specs/geronimo-jpa_2.0_spec/1.1
install -s mvn:org.osgi/org.osgi.compendium/4.2.0
install -s mvn:org.osgi/org.osgi.enterprise/4.2.0
org.eclipse.gemini.dbaccess.derby_1.0.0.M1-incubation.jar
org.eclipse.gemini.jpa.weaving_1.0.0.RC1.jar
org.eclipse.gemini.jpa_1.0.0.RC1.jar

persistence.xmlは:-

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/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_1_0.xsd">

    <persistence-unit name="resource" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>myPkg.entity.Resource</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" 
                /> <property name="javax.persistence.jdbc.url" value="jdbc:derby:DB;create=true" 
                />

            <!-- <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/D:\DB;create=true" /> -->


            <property name="javax.persistence.jdbc.user" value="test" />
            <property name="javax.persistence.jdbc.password" value="test" />
            <property name="eclipselink.logging.level" value="OFF" />

            <!-- EclipseLink should create the database schema automatically -->
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="database" />
            <property name="connection.autocommit" value="false" />
            <property name="eclipselink.persistence-context.flush-mode" value="commit" /> 
            <!-- <property name="eclipselink.allow-zero-id" value="true"/> -->
        </properties>
    </persistence-unit>
</persistence>

ただし、gemini.dbaccess.derby_1.0.0.M1-incubationjar はインストール済み状態のgemini.jpa.weaving jarままであり、解決済み状態のままです。

を再起動するとgemini.dbaccess.derby_1.0.0.M1-incubation、次のエラーが表示されます:-

Reason: Missing Constraint: Import-Package: org.apache.derby.client.am; version="0.0.0"

そして、私のアプリケーションは次のエラーを出します:-

Could not find data source factory in registry: org.apache.derby.jdbc.ClientDriver

OSGI で eclipseLink を使用するのは初めてですが、ここで何が欠けていますか?

4

3 に答える 3

1

Apache karaf 4.0.0 がリリースされました。このバージョンの karaf は eclipseLink サポートを提供します。

feature:install eclipselink

したがって、eclipseLink を使用するために外部アダプターを使用する必要はありません。

于 2015-07-21T18:18:36.580 に答える
0

org.eclipse.gemini.dbaccess.derby_1.0.0.M1-incubation.jarのマニフェストの内容は次のとおりです。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Gemini DBAccess (Incubation)
Bundle-SymbolicName: org.eclipse.gemini.dbaccess.derby
Bundle-Version: 1.0.0.M1-incubation
Bundle-Activator: org.eclipse.gemini.dbaccess.derby.Activator
Bundle-Vendor: Oracle Corporation
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: javax.sql,
org.apache.derby.client.am,
org.apache.derby.jdbc,
org.osgi.framework;version="[1.3,2)",
org.osgi.service.jdbc;version="[1.0,2.0)"

Derbyバイナリーにはまだ 2 つの未解決の依存関係があります。

  • org.apache.derby.client.am
  • org.apache.derby.jdbc

どちらにもバージョン番号がないため、メッセージに0.0.0と表示されます。

2 つのパッケージは、Derby バイナリーで OSGi バンドルとして使用可能なderbyclient.jarファイルの一部です。問題は、このバンドルのExport-Package句がorg.apache.derby.jdbcパッケージのみを公開することです。

簡単な解決策はSpringSource -packaged bundleです。これは 2 つの必要なパッケージを公開します。Java トランザクション APIへの追加の依存関係があることに注意してください。

于 2015-04-29T06:33:32.420 に答える
0

最初に、リージョン機能が Karaf と共にインストールされていることを確認してください。バージョン 4 未満 (まだリリースされていません) を使用している場合、デフォルトで Apache Aries Blueprint 実装がインストールされているためです。したがって、ジェミニに固執したい場合、これは干渉します。したがって、リージョンがインストールされていることを確認してください。次に、eclipse-link バンドルをインストールするための機能があると思います。適切なバンドルを揃えるために、それを見てみたいと思うかもしれません。

Aries ブループリントの impl に固執する場合は、さらに簡単になります。次の機能をインストールするだけです。

feature:install jpa jta jndi 

また、Derby を使用する場合は、 jdbc機能もインストールする必要があります。これにより、データベースへの接続やデータソースの作成に使用する一連のコマンドが提供されます。データソース コマンドを使用すると、必要に応じて正しく動作するダービー クライアント jar をインストールするダービー データベースのデータソースを作成できます。

于 2015-04-30T06:39:35.603 に答える