我有使用 Spring Boot 的简单应用程序。我想允许使用 JSR107 - JCache 进行方法缓存。所以在教程的帮助下,我把这段代码放在一起:
@CacheResult(cacheName = "testpoc")
public Country getCountry(Integer id){
System.out.println("---> Loading country with code '" + id + "'");
return new Country(id, "X", "Title");
}
使用这个 POM 文件
...
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
...
(依赖 'spring-boot-starter-web' 用于调用getCountry方法的简单 REST 服务)
一切都像文档所说的那样工作 - 方法只被调用一次。
现在我想在 WildFly 10 应用服务器上试用它
我修改了 pom 文件:
- 排除tomcat
- 排除的 spring-boot-starter-cache
- 添加了infinispan-jcache(因为我想在standalone/domain.xml中使用wildfly配置/管理的缓存)
在 pastebin 上检查 pom 文件。
问题是,我收到以下错误: 找不到名为“java:jboss/infinispan/app-cache”的缓存
(我尝试使用分配的 JNDI 和名称来配置在 wildfly 中的 infinispan 缓存)。
以下代码创建了 Cache 对象(所以我可以使用它):
CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();
Cache<String, String> cache = cacheManager.createCache("testpoc", new MutableConfiguration<String, String>());
问题:
- 是否可以使用 WildFly 管理的 Infinispan 在 WildFly 10 上使用 JCache 方法缓存?
- 或者 Infinispan 应该用于像 JCache 这样的方法缓存,因此 JCache 比 Infinispan 具有“更多功能”。
非常感谢
PS:将整个代码放在github上并发布链接对我来说不是问题-它是几行代码......