• J2EE之wildfly 实践9 -- 使用infinispan 过期缓存


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

     (转载请注明来源:cnblogs coder-fang)

    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停止后,所有缓存也将清空。

  • 相关阅读:
    Vue3使用vue3-video-player
    centos搭建phantomjs
    windows与Linux写入后门
    webService静态调用方法
    Web开发学习笔记(日更)
    docker修改容器绑定端口
    linux下~/.bashrc、/etc/profile、 $PATH环境变量 作用和修改
    docker for windows安装,修改images位置,修改镜像源,查看/var/lib/docker/containers
    hive修改表DDL
    python 高性能异步爬虫线程&线程池
  • 原文地址:https://www.cnblogs.com/coder-fang/p/7871842.html
Copyright © 2020-2023  润新知