Я пытаюсь интегрировать JCache от Infinispan в свой существующий проект EJB.
Я добавил пакеты Infinispan 5.0.1 CDI и Core в Maven pom. В файл beans.xml добавлены перехватчики Infinispan, которые могут использовать аннотацию CacheResult.
Я развертываю приложение в Glassfish 3.1.1. Я проверил версию jar Weld, которая представляет собой модуль: org.jboss.weld.osgi-bundle:1.1.1.Final.
Во время выполнения перехватчик метода CacheResult не кэширует результат метода и всегда вызывается.
Мой код выглядит так,
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;
}
Метод приветствия() вызывается, но он никогда не добавит результат метода в тестовый кеш. Я чувствую, что мне не хватает какой-то конфигурации или... я не знаю. Пожалуйста помоги мне с этим.
когда я ввожу классы, они не будут построены и будут нулевыми. Код такой,
@Inject
private static org.infinispan.Cache<String, String> defaultCache;
@Inject
private static EmbeddedCacheManager defaultCacheManager;
Они выполняются без ошибок, но не инициализируются.
Я понятия не имею... Но я могу легко внедрить другие EJB в этот класс. Кстати, я пытаюсь добавить функциональность Jcache в один из EJB.
Буду признателен за вашу помощь...
Спасибо... Радж С.