【问题标题】:infinispan as second level cache hibernateinfinispan 作为二级缓存休眠
【发布时间】:2023-03-03 05:00:24
【问题描述】:

尝试使用 infinispan 作为休眠的二级缓存,但总是给我以下错误

org.infinispan.jmx.JmxDomainConflictException:ISPN000034:有 已经是一个 JMX MBean 实例 type=CacheManager,name="DefaultCacheManager" 已经注册在 'org.infinispan' JMX 域。如果要允许多个实例 配置有相同的 JMX 域启用“allowDuplicateDomains” 'globalJmxStatistics' 配置元素中的属性 org.infinispan.jmx.JmxUtil.buildJmxDomain(JmxUtil.java:51) 在 org.infinispan.jmx.CacheManagerJmxRegistration.updateDomain(CacheManagerJmxRegistration.java:79)

这里是休眠属性

setProperty("hibernate.cache.use_second_level_cache", "true");
            setProperty("hibernate.cache.use_query_cache", "true");
            setProperty("hibernate.cache.region.factory_class",
             "org.hibernate.cache.infinispan.InfinispanRegionFactory");
            setProperty("hibernate.cache.infinispan.statistics", "false");
            setProperty("hibernate.cache.infinispan.cfg", "infinispan-config.xml");

infinispan 配置文件

<?xml version="1.0" encoding="UTF-8"?>
   <infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="urn:infinispan:config:7.2"
    xsi:schemaLocation="urn:infinispan:config:7.2 
                        http://www.infinispan.org/schemas/infinispan-config-7.2.xsd
                       urn:infinispan:config:store:jdbc:7.2
                       http://www.infinispan.org/schemas/infinispan-cachestore-jpa-config-7.2.xsd">

    <cache-container default-cache="default" statistics="false">
    <local-cache name="simpleCache" statistics="false">
    </local-cache>

    </cache-container>
</infinispan>

我有两个项目,有两个数据源,一个用于审计,另一个是主要的 Web 项目。 并且异常中的 xml 值在 infinispan 版本 7.2 及以后版本中不存在 在此先感谢您的帮助:)

【问题讨论】:

    标签: java spring hibernate infinispan second-level-cache


    【解决方案1】:

    作为替代解决方案,您可以在需要时尝试删除 xml 配置文件。我们也可以通过编程方式允许重复域。

    GlobalConfiguration config = new GlobalConfigurationBuilder()
                                    .globalJmxStatistics()
                                    .allowDuplicateDomains(Boolean.TRUE)
                                    .build();
    EmbeddedCacheManager cacheManager = new DefaultCacheManager(config);
    

    【讨论】:

      【解决方案2】:

      &lt;jmx duplicate-domains="true" /&gt; 添加到&lt;cache-container /&gt;

      应该更新错误消息。

      【讨论】:

      • 工作得很好,非常感谢:),但这不只是解决多次创建 JMX 域的主要问题吗?
      • 取决于您的设置以及您如何使用 JMX。您可以设置&lt;jmx domain="foo"/&gt; 以在不同的域中查看它们。
      • 猜想我必须深入了解 infinispan 文档以了解 JMX 的正确配置,但根据他们的说法,默认设置应该没有问题 :(,但似乎并非如此。
      猜你喜欢
      • 2014-05-10
      • 2010-10-20
      • 2015-11-07
      • 2016-06-23
      • 2017-07-05
      • 2011-07-08
      • 1970-01-01
      • 2019-04-02
      相关资源
      最近更新 更多