绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
J2EE之wildfly 实践9 -- 使用infinispan 过期缓存
2022-04-15 11:18:26

背景:基于wildfly 10,我们使用内置的infinispan缓存,本次实例只适用于同一jvm下,不能进行分布式使用。

  1. 在standalone.xml中找到<subsystem xmlns="urn:jboss:domain:infinispan:4.0">,在此节点下加入:
    <cache-container name="appcache" default-cache="session" statistics-enabled="false"/>

     

  2. 在ejb项目中(例如之前实践中的DAS项目)的POM中加入相关依赖:
    复制代码
          <!-- for cache-->
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-clustering-infinispan-extension</artifactId>
                <version>10.0.0.Final</version>        
                <scope>provided</scope>    
            </dependency>
    复制代码

     

  3. 在pom文件中修改maven-assembly-plugin,加入infinispan依赖:
    复制代码
    <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <finalName>${project.build.finalName}</finalName>
                        <archive>                        
                            <manifestEntries>
      
    <!-- infinispan depend --> <Dependencies>org.infinispan, org.infinispan.commons, org.jboss.as.clustering.infinispan export</Dependencies> </manifestEntries> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <appendAssemblyId>false</appendAssemblyId> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
    复制代码

     

  4. 创建一个ejb singleton bean,并注入cache contanier:
        @Resource(lookup="java:jboss/infinispan/container/appcache")    
        EmbeddedCacheManager container;

     

  5. 在bean的初始化函数如@PostConstruct 中设置 缓存的过期时间,此事例设置为6秒:
    复制代码
      @PostConstruct
        public void init()
        {
            
            container.defineConfiguration("session",new ConfigurationBuilder()
                    .expiration().lifespan(6000)
                    .build());
    
            cache=container.getCache();
            logger.debug("cache name:"+cache.getName());
            logger.debug("cache lifespan:"+cache.getCacheConfiguration().expiration().lifespan());
            
            logger.info("init----");
        }
    复制代码

    注:如上所示,当put value进入缓存后,6秒之后自动删除此value

  6. 使用 cache.put(key,value),cache.remove(key)进行增加与删除缓存,或使用cache.values()来遍历缓存,这里不在演示。

总结:如果不设置相关过期时间,value只能通过remove删除,或wildfly停止后,所有缓存也将清空。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Infinispan
创建时间:2022-04-15 10:28:31
Infinispan
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • LCR_
    专家
戳我,来吐槽~