我有使用Spring的简单应用程序。我希望使用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 starter”用于简单的REST服务,该服务称为getCountry方法)
一切都像documentations那样工作--方法只被调用一次。
现在我想在WildFly 10应用服务器上试用它
我修改了pom文件:
检查pom文件在巴斯托上。
问题是,我收到以下错误:找不到名为的缓存
(我已经尝试使用已分配的JNDI和在通配符中配置的无穷大缓存的名称)。
下面的代码创建了Cache对象(因此我可以使用它):
CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();
Cache<String, String> cache = cacheManager.createCache("testpoc", new MutableConfiguration<String, String>());问题:
非常感谢
PS :这不是问题,我把整个代码放在github和post链接-这是几行代码.
发布于 2016-09-12 05:44:53
您的方法有几个问题,所以让我分步骤介绍一下。
首先,您需要使用正确的Infinispan设置。随WF装运的Infinispan位应视为内部或私有的。为了在应用程序中正确地使用Infinispan --要么将org.infinispan:infinispan-embedded添加到部署中,要么安装Infinispan野蝇模。您可以找到安装指南这里 (它有点过时,但是过程完全相同--将模块解压缩到WF并使用Dependencies MANIFEST.MF条目)。
一旦您成功安装了Infinispan (或将其添加到您的应用程序中),您需要考虑使用弹簧缓存还是JCache。如果您只对使用注释感兴趣--我建议使用前者,因为设置起来容易得多(只需将@EnableCaching添加到您的一个配置中)。最后,使用Spring,您将创建一个Infinispan。一个例子可以找到这里。
最后注意--如果仍然需要使用JCache --使用本手册设置缓存提供程序。
https://stackoverflow.com/questions/39374556
复制相似问题