Я пытаюсь интегрировать JCache из Infinispan в мой существующий проект EJB.
Я добавил пакеты Infinispan 5.0.1 CDI и Core в Maven pom.Добавлены Infinispan Interceptors в beans.xml и возможность использовать аннотацию CacheResult.
Я развертываю приложение в Glassfish 3.1.1.Я проверил версию JAR-файла Weld, которая является Module: org.jboss.weld.osgi-bundle: 1.1.1.Final
Во время выполнения перехватчик метода CacheResult не кэширует результат метода и всегда егоcall.
Мой код выглядит следующим образом, вызывается метод
public void cacheTest() {
Thread.currentThread().setContextClassLoader(
this.getClass().getClassLoader());
EmbeddedCacheManager manager = createCacheConfig();
Set<String> cacheList = manager.getCacheNames(); // new
// DefaultCacheManager().getCacheNames();
for (String cache : cacheList) {
System.out.println("Cache name " + cache);
}
defaultCache = manager.getCache("test-cache");
defaultCache.put("aa", "AA");
String user = "User";
greet(user);
Set<String> keys = defaultCache.keySet();
for (String key : keys) {
System.out.println("Key is -" + key + "Value is -"
+ defaultCache.get(key));
}
}
@CacheResult(cacheName = "test-cache")
public String greet(@CacheKeyParam String user) {
user += "Hello";
return user;
}
public EmbeddedCacheManager createCacheConfig() {
EmbeddedCacheManager manager = new DefaultCacheManager();
Configuration conf = new Configuration();
conf.fluent().eviction().strategy(EvictionStrategy.FIFO).maxEntries(10)
.expiration().maxIdle(1200000L).build();
conf.fluent().clustering().sync();
manager.start();
manager.defineConfiguration("test-cache", conf);
return manager;
}
greet (), но он никогда не добавит результат метода в тест-кеш.Я чувствую, что мне не хватает какой-то конфигурации или ... я не знаю.Пожалуйста, помогите мне в этом.
Когда я внедряю классы, они не будут построены, и они будут нулевыми.Код выглядит следующим образом:
@Inject
private static org.infinispan.Cache<String, String> defaultCache;
@Inject
private static EmbeddedCacheManager defaultCacheManager;
Они выполняются без ошибок, но они не инициализируются.
Понятия не имею ... Но я могу вставлять другие EJB с помощьюв этом классе легко.Кстати, я пытаюсь добавить функциональность Jcache в один из EJB.
Буду признателен за вашу помощь ...
Спасибо ... Raj S