当前位置: 首页 > 知识库问答 >
问题:

Ehcache 3和Spring Boot管理统计信息

巫培
2023-03-14

我正在尝试将当前使用Ehcache 2的Spring Boot项目迁移到最新的Ehcache 3.7。

除了缺少Spring Boot管理缓存统计数据外,一切似乎都很好。

以下是以前的Ehcache 2配置:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="ehcache.xsd"
     updateCheck="false"
     monitoring="on"
     dynamicConfig="true"
     statistics="true">

<cache name="asset"
       maxEntriesLocalHeap="5"
       timeToIdleSeconds="600"
       timeToLiveSeconds="3600"
       memoryStoreEvictionPolicy="LRU"/>

</ehcache>

以及新的Ehcache 3配置:

<?xml version="1.0" encoding="UTF-8"?>
<config
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xmlns='http://www.ehcache.org/v3'
    xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
    xsi:schemaLocation="
    http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.6.xsd
    http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.6.xsd">

<service>
    <jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>

<cache alias="asset">
    <resources>
        <heap unit="entries">5</heap>
    </resources>
    <expiry>
        <ttl unit="hours">1</ttl>
    </expiry>
    <jsr107:mbeans enable-management="true" enable-statistics="true"/>
</cache>

</config>

POM依赖项(仅与缓存管理相关):

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jcache</artifactId>
        <version>5.4.1.Final</version>
    </dependency>

    <dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>3.7.0</version>
    </dependency>

Spring配置:

spring:
  cache:
    ehcache:
      config: classpath:ehcache.xml
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL8Dialect
        hbm2ddl:
          auto: none
        cache:
          use_second_level_cache: true
          region:
            factory_class: jcache
        javax:
          cache:
            provider: org.ehcache.jsr107.EhcacheCachingProvider
            missing_cache_strategy: fail

我曾经使用Ehcache 2获取这种统计信息:

但使用Ehcache 3,SBA Insights/Details页面和Data/Caches one上都不会显示统计信息。

对于Ehcache 2来说,它相当于即插即用,但对于Ehcache 3来说,情况似乎并非如此。

有人有提示吗?

谢谢

共有1个答案

田志尚
2023-03-14

解决了的!愚蠢的错误。。。

在Spring配置中,而不是:

spring:
  cache:
    ehcache:
      config: classpath:ehcache.xml

我必须将其用于Ehcache 3:

spring:
  cache:
    jcache:
      config: classpath:ehcache.xml

定义一个bean:

@Bean
public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(
        JCacheCacheManager cacheManager) {
    return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER,
            cacheManager.getCacheManager());

}

如下所述:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-configure-hibernate-second-level-caching

现在通过SBA中的执行器和JMX可以很好地报告缓存:)

 类似资料:
  • 本文向大家介绍java学生信息管理系统设计,包括了java学生信息管理系统设计的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java学生信息管理系统的具体代码,供大家参考,具体内容如下 本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp 获取数据库连接的工具ConnUtils5.java 资源文件jdbc.properties 值

  • 本文向大家介绍java学生信息管理系统设计(2),包括了java学生信息管理系统设计(2)的使用技巧和注意事项,需要的朋友参考一下 本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp 工具包 获取数据库连接的工具ConnUtils5.java 代理 代理2:不需要强转,但是代理了所有 注解 代理3:用注解实现需要事务则用事务 资源文件jdbc.p

  • 本文向大家介绍java学生信息管理系统设计与实现,包括了java学生信息管理系统设计与实现的使用技巧和注意事项,需要的朋友参考一下 闲暇之余用JAVA写了个学生信息的管理系统,由于博主还是萌新,代码难免有冗余和错误的地方,如果您发现有什么不足之处或者错误,请留言。博主会尽量回复。 需求分析 一个学生信息管理系统应该包含这些内容: 教师页面 在教师页面应该包含: 学生页面 在教学生页面应该包含: 包

  • 本文向大家介绍python学生信息管理系统,包括了python学生信息管理系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下 更多学习资料请关注专题《管理系统开发》。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 系统功能设计 代码实现 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<dos.h> #include<string.h> #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n" #d

  • 问题内容: 我正在使用Spring 3.1.1.RELEASE,JUnit 4.8.1和Hibernate 4.1.5.Final。我正在尝试测试二级缓存是否配置正确,但是不确定如何做。我正在使用像这样在Spring中配置的JPA实体管理器… 我已经像这样配置了二级缓存… 给定javax.persistence.EntityManager,如何访问org.hibernate.stat.Statis