首页
学习
活动
专区
圈层
工具
发布

Infinispan
EN

Stack Overflow用户
提问于 2016-08-13 01:54:21
回答 1查看 170关注 0票数 0

我正在使用infinispan,并通过下面的代码行初始化DefaultCacheManager:

代码语言:javascript
复制
                GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder();
                gcb.globalJmxStatistics().enabled(false).allowDuplicateDomains(true);
                gcb.transport().defaultTransport().addProperty(JGroupsTransport.CONFIGURATION_STRING,
                        configurator.getProtocolStackString());

                ConfigurationBuilder builder = new ConfigurationBuilder();
                builder.clustering().cacheMode(CacheMode.DIST_SYNC).expiration().lifespan(24l, TimeUnit.HOURS);

                builder.clustering().stateTransfer().awaitInitialTransfer(false);
                builder.clustering().hash().numOwners(2);

                cacheManager = new DefaultCacheManager(gcb.build(), builder.build());

上面的代码片段存在于部署在同一个应用服务器中的N war中。

因此,当我同时部署所有war时,在执行新的DefaultManager()指令时会遇到并发异常

代码语言:javascript
复制
org.infinispan.jmx.JmxDomainConflictException: ISPN000034: There's already a JMX MBean instance type=CacheManager,name="DefaultCacheManager" already registered under 'org.infinispan' JMX domain. 

即使我指定了配置属性,也会发生这种情况:

代码语言:javascript
复制
allowDuplicateDomains(true);

我该如何正确处理这种行为呢?

EN

回答 1

Stack Overflow用户

发布于 2016-08-14 00:47:30

我创建了一个reproducer for this issue,据我所知,它看起来没问题。

只有几个陷阱和提示:

  • 请确保您使用的是最新的稳定版本(在这种情况下,8.2.4.Final).
  • I建议使用CDI extension,而不是实现您自己的引导和清理。
  • 如果您出于某种原因需要自己创建CacheManager -请记住在销毁beans时停止它。
  • 如果您使用的是Wildfly -请记住,您的CacheManager不是容器中唯一的一个(WF使用Infinispan beans等内部事务
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38923855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档