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 ファイルを変更しました:
- トムキャットを除外
- 除外された spring-boot-starter-cache
- infinispan-jcache を追加しました (standalone/domain.xml で wildfly によって構成/管理されているキャッシュを使用したいため)
ここのpastebinでpomファイルを確認してください。
問題は、次のエラーが表示されることです: 「java:jboss/infinispan/app-cache」という名前のキャッシュが見つかりません
(ワイルドフライで構成された infinispan キャッシュに割り当てられた JNDI と名前の両方を使用しようとしました)。
次のコードは Cache オブジェクトを作成しました(私はそれを使うことができます):
CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();
Cache<String, String> cache = cacheManager.createCache("testpoc", new MutableConfiguration<String, String>());
質問:
- WildFly が管理する Infinispan を使用して、WildFly 10 で JCache メソッド キャッシングを使用することは可能ですか?
- または、JCache のようなメソッド キャッシングには Infinispan を使用する必要があります。したがって、JCache は Infinispan よりも「多くの機能」を備えています。
どうもありがとうございました
PS:コード全体をgithubに置いてリンクを投稿しても問題ありません-数行のコードです...