0

Google App Engine 1.8.7 で Memcache をレベル 2 キャッシュとして使用するように JPA 2.0 を構成する方法を見つけようとしています。

1年前の説明書を見つけましたが、現在は機能していません。

私が得ているエラーは次のとおりです。

使用する<property name="datanucleus.cache.level2.type" value="jcache" />と、次のエラーが発生します。

コア3.1.4/キャッシュあり3.1.2:

[情報] 原因: net.sf.jsr107cache.CacheException: クラスが見つかりません: 'ri.cache.BasicCacheFactory'

コア3.1.2/キャッシュあり3.1.2:

[INFO] 原因: org.datanucleus.exceptions.NucleusUserException: レベル 2 キャッシュ "jcache" は、クラス "org.datanucleus.cache.jcache.JCacheLevel2Cache" を使用するように登録されていますが、これが見つかりません。CLASSPATH とプラグインの仕様を確認してください。

どちらの問題を解決するために何をどこに追加すればよいかわかりません。

使用する<property name="datanucleus.cache.level2.type" value="javax.cache" />と、次のエラーが発生します。

[INFO] 原因: org.datanucleus.exceptions.NucleusUserException: レベル 2 キャッシュ "javax.cache" は、クラス "org.datanucleus.cache.JavaxCacheLevel2Cache" を使用するように登録されていますが、これが見つかりません。CLASSPATH とプラグインの仕様を確認してください。

私は自分で次の設定を試しましたが、persistence.xmlどちらも機能しません。

関連する構成設定は次のとおりです。

persistence.xml

<property name="datanucleus.cache.level2.name" value="entitycache" />
<property name="datanucleus.cache.level2.type" value="javax.cache" />

<property name="datanucleus.cache.level2.name" value="entitycache" />
<property name="datanucleus.cache.level2.type" value="jcache" />

pom.xml

<properties>
    <resteasy.version>3.0.5.Final</resteasy.version>
    <jackson.version>2.2.3</jackson.version>
    <gae.version>1.8.7</gae.version>
    <gae-runtime.version>1.8.0</gae-runtime.version>
    <gae.home>/Users/jhr/.m2/repository/com/google/appengine/appengine-java-sdk/1.8.7/appengine-java-sdk-1.8.7
    </gae.home>
    <datanucleus.version>3.1.2</datanucleus.version>
</properties>

<dependency>
    <groupId>com.google.appengine.orm</groupId>
    <artifactId>datanucleus-appengine</artifactId>
    <version>2.1.2</version>
</dependency>

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>${datanucleus.version}</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-api-jpa</artifactId>
    <version>${datanucleus.version}</version>
</dependency>

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-cache</artifactId>
    <version>${datanucleus.version}</version>
</dependency>

WEB-INF/lib

-rw-r--r--  1 jhr  staff   249K Nov 16 03:07 datanucleus-api-jpa-3.1.4.jar
-rw-r--r--  1 jhr  staff   338K May 17  2013 datanucleus-appengine-2.1.2.jar
-rw-r--r--  1 jhr  staff    44K Dec  4 00:24 datanucleus-cache-3.1.2.jar
-rw-r--r--  1 jhr  staff   1.7M Nov 16 03:07 datanucleus-core-3.1.4.jar
-rw-r--r--  1 jhr  staff   188K Mar 14  2013 datanucleus-enhancer-3.1.1.jar
-rw-r--r--  1 jhr  staff   7.9K Dec  4 01:22 jsr107cache-1.1.jar

これを機能させるには、何を追加/削除/変更する必要がありますか?

4

1 に答える 1

3

参照した回答で述べたように、App Engine は「古い」JSR107 インターフェースを実装します。これは、Datanucleus 3.1+ が persistence.xml / jdoconfig.xml で次のプロパティを設定することによってサポートされます。

<property name="datanucleus.cache.level2.type" value="jcache" />

( http://www.datanucleus.org/products/accessplatform/jpa/cache.html#jcacheを参照)

次の Maven 依存関係も追加する必要があります。

<!-- JSR 107 API -->
<dependency>
    <groupId>net.sf.jsr107cache</groupId>
    <artifactId>jsr107cache</artifactId>
    <version>1.1</version>
</dependency>
<!-- App Engine Memcache JSR 107 implementation -->
<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-jsr107cache</artifactId>
    <version>${appengine.target.version}</version>
</dependency>
<!-- Datanucleus cache extension to use a JSR 107 implementation as L2 cache -->
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-cache</artifactId>
    <version>3.1.3</version>
</dependency>

あなたが提供した情報に基づいて、2 番目の情報が不足していた可能性がありますか?

于 2014-01-10T09:57:39.863 に答える