私は EhCache を初めて使用し、分散キャッシュ サービスとして実装する途中です。簡単なプログラムを試してみましたが、エラーを解決できませんでした。データをキャッシュに保存できますが、取得できません。
これらは、テスト用に作成した 2 つの単純なプログラムです。
package com.db.tests;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class TestCachePut {
public TestCachePut() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
CacheManager cache= CacheManager.create("E:/ehcache-2.6.2/ehcache.xml");
Cache caches = cache.getCache("cache1");
Element element= new Element("testKey", "inserted to cache");
caches.put(element);
System.out.println("Put in to cache");
}
}
プログラム 2:
package com.db.tests;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class TestCacheGet {
public TestCacheGet() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
CacheManager caches = CacheManager.getInstance();
Element val = caches.getCache("cache1").get("testKey");
System.out.println(" cache content: "+val.getValue());
}
}
私はehcache.xmlを次のように構成しています<cache name="cache1"
maxEntriesLocalHeap="10000"
maxEntriesLocalDisk="1000"
eternal="false"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="3000"
timeToLiveSeconds="6000"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap"/>
</cache>
Teracotta サーバーが起動し、稼働中を示しています。プログラム 1 を実行すると、エラーなしで実行されます。その後、2番目のものを実行しましたが、NPEとしてエラーが発生しました。
24 Dec, 2012 12:05:42 PM net.sf.ehcache.config.ConfigurationFactory parseConfiguration
WARNING: No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/E:/ehcache-2.6.2/lib/ehcache-core-2.6.2.jar!/ehcache-failsafe.xml
Exception in thread "main" java.lang.NullPointerException
at com.db.tests.TestCacheGet.main(TestCacheGet.java:22)
どちらの場合も構成 xml を指定すると、警告付きで NPE が再度生成されます。
4 Dec, 2012 12:22:34 PM net.sf.ehcache.DiskStorePathManager resolveAndLockIfNeeded
WARNING: diskStorePath 'E:\Users\SKRISH~1\AppData\Local\Temp' is already used by an existing CacheManager either in the same VM or in a different process.
The diskStore path for this CacheManager will be set to E:\Users\SKRISH~1\AppData\Local\Temp\ehcache_auto_created1315701513913502723diskstore.
To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance.
私が間違っているのは何ですか?いくつか入力してください。
ありがとう