2016-10-25 2 views
1

У меня установлен и запущен JBoss 7 в кластере. Я разрабатываю приложение Spring Boot 1.3.2. Я определил следующий кэш Infinispan в domain.xml:Весенняя загрузка и кеш Infinspan на JBoss

  <cache-container name="my-cache" default-cache="auth"> 
       <transport stack="tcp" lock-timeout="10000"/> 
       <replicated-cache name="auth" mode="SYNC" batching="true"> 
        <locking isolation="REPEATABLE_READ"/> 
        <transaction mode="NONE"/> 
        <eviction strategy="LRU" max-entries="100"/> 
        <expiration max-idle="300000"/> 
       </replicated-cache> 
      </cache-container> 

В application.properties файл я определил следующий:

spring.cache.type=infinispan 

а затем на моем классе кэш я определил:

@CacheConfig(cacheNames="java:jboss/infinispan/cache/my-cache/auth") 

Когда я пытаюсь развернуть приложение на JBoss, я получаю следующую ошибку:

Caused by: java.lang.IllegalArgumentException: No cache manager could be auto-configured, check your configuration (caching type is 'INFINISPAN' 

Как настроить его для правильной работы?

ответ

3

ОК, я последовал за this учебным пособием и решил проблему.

Это то, что я сделал.

Я создал кэш-класс конфигурации, который будет определять мою CacheManager сконфигурированный в JBoss:

@Configuration 
@EnableCaching 
public class CachingConfig { 

    @Bean 
    public CacheManager cacheManager() { 
     JndiTemplate jndiTemplate = new JndiTemplate(); 
     try { 
      EmbeddedCacheManager embededCacheManager = (EmbeddedCacheManager) jndiTemplate.lookup("java:jboss/infinispan/container/my-cache"); 
      SpringEmbeddedCacheManager cacheManager = new SpringEmbeddedCacheManager(embededCacheManager); 
      return cacheManager; 
     } catch (NamingException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 
} 

я добавил следующие зависимости:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-cache</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.infinispan</groupId> 
    <artifactId>infinispan-spring</artifactId> 
    <version>5.1.2.FINAL</version> 
</dependency> 

И явно объявленную Infinispan зависимость:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifestEntries> 
       <Dependencies>org.infinispan</Dependencies> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 
+0

В Итак, всегда лучше объяснить это решение не только ссылкой. –

+0

Спасибо, я отредактировал сообщение и добавил объяснение. – dplesa

Смежные вопросы