小心缓存管理器

如果使用spring和JPA,则很有可能利用ehcache(或其他缓存提供程序)。 您可以在两种不同的情况下进行此操作:JPA 2级缓存和spring方法缓存。

在配置应用程序时,通常会设置JPA提供程序的二级缓存提供程序(在我的情况下为休眠),并且还使用“缓存”名称空间配置spring。 一切看起来都很好,您将继续进行该项目。 但是有一个警告。 如果采用最直接的方法,则会得到两个单独的缓存管理器,它们加载相同的缓存配置文件。 从本质上来说,这还不错,但是要考虑一下–您是否真的需要两个缓存管理器,以及由此可能引起的问题?

可能你不会。 因此,您必须摆脱冗余管理器。 为此,您需要将spring缓存管理器设置为共享:

<bean id='ehCacheManager'class='org.springframework.cache.ehcache.EhCacheManagerFactoryBean'><property name='shared' value='true' />
</bean>

这意味着spring将不会创建缓存管理器的新实例,而是将重用hibernate已经创建的实例。 现在,这里需要考虑一些问题-这取决于bean创建的顺序–是将JPA工厂bean还是缓存管理器工厂bean放在首位。 幸运的是,这与最终结果无关紧要,因为SingletonEhCacheRegionFactory如果找到现有实例,则会重用现有的缓存管理器实例。

因此,现在您已将缓存管理器设置为jvm-singleton。 但是,如果您部署了多个应用程序并且正在使用JMX,则可能会遇到另一个问题。 缓存管理器将其自身注册为JMX bean。 但是,当您有单身人士时,多个应用程序将尝试多次注册同一缓存管理器,这将失败。 结果将是日志中有几个例外,并且无法控制多个模块的缓存管理器。 如果您使用Terracotta之类的东西,则同样的问题会变得很麻烦(缓存管理器的身份很重要)。 幸运的是,您可以轻松解决此问题。 只需向上面显示的bean定义添加一个属性:

<property name='cacheManagerName' value='${module.name}' />

${module.name}是使用PropertyPlaceholderConfigurer解析的PropertyPlaceholderConfigurer并且可以针对每个${module.name}应用程序进行配置,因此每个Web应用程序可以具有不同的模块名称。 这样,可以通过JMX以指定的名称访问缓存管理器。

总体而言,请谨慎使用缓存管理器。 即使在使用不同的缓存,jpa和DI提供程序的情况下,也应验证上述方案。

参考:在Bozho的技术博客博客上, 请注意我们JCG合作伙伴 Bozhidar Bozhanov的 缓存管理器 。

翻译自: https://www.javacodegeeks.com/2013/01/be-careful-with-cache-managers.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DirectX11 学习笔记7 - 支持自由移动的摄像机

如今将又一次制定一个camera摄像机。能够自由移动。比方前进 后退&#xff0c;上游 下潜。 各个方向渲染之类的。 首先设置按键。 这个时候须要在 XWindow.h 里面 bool XWindow::frame() {//推断是否按下ESC键if(x_input->isKeyDown(VK_ESCAPE))return false;//假设A,S,D,W,…

腾讯吃鸡 android,腾讯吃鸡手游《光荣使命》正式上线:安卓/iOS不限号测试

IT之家11月29日消息 今天下午&#xff0c;腾讯首款百人战术竞技手游《光荣使命》在安卓、iOS双平台正式上线&#xff0c;开启全面测试。(官网下载&#xff1a;点此链接&#xff0c;双平台已开放下载。)该游戏采用第三人称射击视角&#xff0c;玩家化身参与“使命行动”军事演习…

lazada铺货模式的选品_lazada小白的运营难点→铺货与精细化运营的优劣势详解

lazada是铺货还是精细化经营第一种铺货铺货作为平台早期都是比较受欢迎的&#xff0c;平台的蛮荒期&#xff0c;成长期当中&#xff0c;铺货的商家是非常受欢迎的&#xff0c;因为平台需要更多SKU产品&#xff0c;去吸引买家&#xff0c;铺货这个时候是最好的也是能最快的成长起…

ife 零基础学院 day 2

第二天&#xff1a;给自己做一个在线简历吧 最后的验证&#xff0c;提出了几个问题&#xff0c;尝试解答一下 HTML是什么&#xff0c;HTML5是什么 HTML的定义摘抄自w3school的HTML 简介 HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Langua…

excel数据生成sql insert语句

excel数据生成sql insert语句 excel表格中有A、B、C三列数据&#xff0c;希望导入到数据库users表中&#xff0c;对应的字段分别是name,sex,age 。 在你的excel表格中增加一列&#xff0c;利用excel的公式自动生成sql语句&#xff0c;方法如下&#xff1a; 1、增加一列&#xf…

Java中的推断异常

借用和窃取其他语言的概念和想法总是很高兴的。 Scala的Option是我真正喜欢的一个主意&#xff0c;因此我用Java编写了一个实现。 它包装了一个可能为null或不为null的对象&#xff0c;并提供了一些可按某种功能使用的方法。 例如&#xff0c;isDefined方法添加了一种面向对象的…

重载,覆盖,隐藏

转载于:https://www.cnblogs.com/jhcelue/p/7145525.html

Animate.css介绍

Animate.css简介 animate.css 动画库&#xff0c;预设了抖动&#xff08;shake&#xff09;、闪烁&#xff08;flash&#xff09;、弹跳&#xff08;bounce&#xff09;、翻转&#xff08;flip&#xff09;、旋转&#xff08;rotateIn/rotateOut&#xff09;、淡入淡出&#x…

logstash 吞吐量优化_1002-谈谈ELK日志分析平台的性能优化理念

在生产环境中&#xff0c;我们为了更好的服务于业务&#xff0c;通常会通过优化的手段来实现服务对外的性能最大化&#xff0c;节省系统性能开支&#xff1b;关注我的朋友们都知道&#xff0c;前段时间一直在搞ELK&#xff0c;同时也记录在了个人的博客篇章中&#xff0c;从部署…

spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能

Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作。DataFrame可以使用关系变换进行操作&#xff0c;也可以用来创建临时视图。将DataFrame 注册为临时视图允许您对其数据运行SQL查询。本节介绍使用Spark Data Sou…

sqlserver日期函数

SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上&#xff0c;返回新的 datetime 值 例如&#xff1a;向日期加上2天 select dateadd(day,2,2004-10-15) --返回&#xff1a…

荣耀鸿蒙系统开机动画,荣耀赵明:鸿蒙系统首发设备欲屏蔽开机广告

来源&#xff1a;硅谷分析狮余承东表示8月9日会发布鸿蒙系统&#xff0c;而从他透露的一些细节看&#xff0c;鸿蒙系统将首先运用在智慧屏终端上&#xff0c;其配合大屏幕和自研芯片(麒麟AI芯片&#xff0c;鸿鹄智慧显示芯片&#xff0c;凌霄WIFI芯片)&#xff0c;将实现生态上…

编写Maven插件的提示

最近&#xff0c;我花了很多时间来编写或为Maven开发插件。 它们简单&#xff0c;有趣且有趣。 我以为我会分享一些技巧&#xff0c;使他们在编写时变得更轻松。 提示1&#xff1a;将任务与Mojo分开 最初&#xff0c;您将把mojo的所有代码放入mojo的类&#xff08;即&#xf…

oracle通信通道的文件结尾_ORA-03113:通信通道的文件结尾解决

提示ORA-03113&#xff1a;通信通道的文件结尾解决事情原由&#xff1a;oracle安装到win7下&#xff0c;以为都是直接sqlplus / as sysdba&#xff0c;使用数据库&#xff0c;但最近连接时频繁报错&#xff0c;提示ORA-03113&#xff1a;通信通道的文件结尾进程 ID &#xff1a…

Python_迭代器与生成器

迭代器 迭代是Python最强大的功能之一&#xff0c;是访问集合元素的一种方式。。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法&#xff1a;iter()…

JSOI 2009 BZOJ 1444 有趣的游戏

题面 题目描述 小阳阳发明了一个有趣的游戏&#xff1a;有n个玩家&#xff0c;每一个玩家均有一个长度为 l 的字母序列&#xff0c;任何两个玩家的字母序列不同。共有m种不同的字母&#xff0c;所有的字母序列都由这m种字母构成&#xff0c;为了方便&#xff0c;我们取大写字母…

html语言dl与ul,HTML中DL、UL、OL用哪个比较好

大家好~ 我是一枚正直纯洁的苦逼程序员&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;ul&#xff0c;ol&#xff0c;dl标签是CSS网页布局中常用的列表元素。 列表将具有相似特征或先后顺序的内容按照从上到下的顺序排列起来。1.ul标签&#xff1a;无序列表始于…

slot多作用域 vue_详解Vue.js 作用域、slot用法(单个slot、具名slot)

作用域HEi免费资源网在介绍slot前&#xff0c;需要先知道一个概念&#xff1a;编译的作用域。比如父组件中有如下模板&#xff1a;HEi免费资源网{{message}}这里的message就是一个slot&#xff0c;但是它绑定的是父组件的数据&#xff0c;而不是组件< child-component >的…

Java – JDK 8的远景

世界正在缓慢但肯定地发生变化。 经过更改后&#xff0c;Java有了JDK 7的全新外观&#xff0c;Java社区期待JDK 8&#xff08;可能还有JDK 9&#xff09;所带来的其余改进。 JDK 8的目标目的是填补JDK 7实施中的空白-该实施中剩下的部分难题&#xff0c;应该在2013年底之前为广…

CSS 学习路线(一)元素

元素(element) 类型:替换和非替换元素 替换元素(replaced element): 用来替换元素内容的部分并非由文档内容直接显示. eg:img input 非替换元素(nonreplaced element): 其内容由用户代理在元素本身生成的框显示. eg:绝大多数都是非替换元素 基本元素类型:块级(block-lev…