ehCache与JRebel

本文介绍了如何使用EHCache进行缓存管理,包括创建缓存实例、设置缓存项的有效期及获取缓存数据的过程。此外,还探讨了JRebel插件在Sun HotSpot JVM中的应用,使开发者能够在不重启JVM的情况下更新代码。
CacheManager ehCacheManager = new CacheManager();
ehCacheManager.addCache("default");
Ehcache cache =ehCacheManager.getCache("default");
Element e = new Element("aa", "aa", false, 1, 1);
e.setEternal(false);
cache.put(e);
System.out.println(cache.get("aa"));
Thread.sleep(1050);
System.out.println(cache.get("aa"));

log:

Deleting data file default.data

Initializednet.sf.ehcache.store.LruMemoryStore for default

default Cache: UsingSpoolingLinkedHashMap implementation

Initialised cache: default

Adding default to RMI listener

0 RMICachePeers bound in registryfor RMI listener

[ key = aa, value=aa, version=0,hitCount=1, CreationTime = 1329102805786, LastAccessTime = 1329102805786 ]

default Memory cache hit, butelement expired

null  e.setEternal(false);如果不这样设置,cache中数据还存在


C:\Bea\user_projects\domains\domain\startWebLogic.cmd->.\bin\startWebLogic.cmd->.\bin\setDomainEnv.cmd

-javaagent:C:\Bea\lib\jrebel.jar-Drebel.dirs=C:\project\project_zxq \GERI\SalesDashboard\AVITA_JAVA_DEV\WebContent\WEB-INF\classes

log:

JRebel: Directory 'C:\project\project_zxq\GERI\SalesDashboard\AVITA_JAVA_DEV\WebContent\WEB-INF\classes' willbe monitored for class changes.



在 Sun HotSpot JVM 的 debug 模式下,我们可以修改方法 body 的代码而不需要重启 JVM ,但是这种修改在当前的 JVM 版本中是有限制的,即不能动态增加 / 删除成员变量,也不能动态增加 / 删除 / 修改方法定义。

         Dynamic Code Evolution Virtual Machine (DCE VM) 是 HotSpot JVM 的一个 HotSwap 增强,允许无限制的修改类定义。需要注意的是,在 DCE VM 的文档中提醒到,该补丁目前还处于试验阶段 当该补丁用于调试 java 程序使用是相当稳定的,但不提倡在生产环境中使用该补丁。

         该插件的安装非常简单,在 Windows ,模式下,下载安装包,在命令行中运行 java –jar dcevm-0.2-win.jar ,安装程序会替换掉 java 下 bin/client/jvm.dll 和 bin/server/jvm.dll ,并将 dcevm.jar 加到 lib/ext/ 目录。



D:\develop\Java\jdk-17.0.12\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:62873,suspend=y,server=n -Drebel.base=C:\Users\shuang\.jrebel -Drebel.env.ide.plugin.build=162751f8787fe64cca7bd46af9d7965e7a8c0fff -Drebel.env.ide.plugin.version=2024.4.2 -Drebel.env.ide.version=2021.2.2 -Drebel.env.ide.product=IU -Drebel.env.ide=intellij -Drebel.notification.url=http://localhost:17434 -Xshare:off -agentpath:D:\develop\idea\jr-ide-intellij-2024.4.2\jr-ide-idea\lib\jrebel6\lib\jrebel64.dll -javaagent:D:\develop\idea\ideaIU-2021.2.2.win\plugins\java\lib\rt\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath D:\develop\idea\ideaProjects\JL_TOLLSYSTEM_CODE\target\classes;D:\develop\Maven\repo\com\jfinal\jfinal-undertow\1.6\jfinal-undertow-1.6.jar;D:\develop\Maven\repo\io\undertow\undertow-core\2.0.19.Final\undertow-core-2.0.19.Final.jar;D:\develop\Maven\repo\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;D:\develop\Maven\repo\org\jboss\xnio\xnio-api\3.3.8.Final\xnio-api-3.3.8.Final.jar;D:\develop\Maven\repo\org\jboss\xnio\xnio-nio\3.3.8.Final\xnio-nio-3.3.8.Final.jar;D:\develop\Maven\repo\io\undertow\undertow-servlet\2.0.19.Final\undertow-servlet-2.0.19.Final.jar;D:\develop\Maven\repo\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;D:\develop\Maven\repo\com\jfinal\jfinal\4.2\jfinal-4.2.jar;D:\develop\Maven\repo\org\slf4j\slf4j-nop\1.7.25\slf4j-nop-1.7.25.jar;D:\develop\Maven\repo\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\develop\Maven\repo\com\alibaba\druid\1.1.12\druid-1.1.12.jar;D:\develop\Maven\repo\com\alibaba\fastjson\1.2.54\fastjson-1.2.54.jar;D:\develop\Maven\repo\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\develop\Maven\repo\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar;D:\develop\Maven\repo\com\jfinal\cos\2017.5\cos-2017.5.jar;D:\develop\Maven\repo\net\sf\ehcache\ehcache-core\2.6.11\ehcache-core-2.6.11.jar;D:\develop\Maven\repo\org\apache\poi\poi-ooxml\3.17\poi-ooxml-3.17.jar;D:\develop\Maven\repo\org\apache\poi\poi\3.17\poi-3.17.jar;D:\develop\Maven\repo\org\apache\commons\commons-collections4\4.1\commons-collections4-4.1.jar;D:\develop\Maven\repo\org\apache\poi\poi-ooxml-schemas\3.17\poi-ooxml-schemas-3.17.jar;D:\develop\Maven\repo\org\apache\xmlbeans\xmlbeans\2.6.0\xmlbeans-2.6.0.jar;D:\develop\Maven\repo\stax\stax-api\1.0.1\stax-api-1.0.1.jar;D:\develop\Maven\repo\com\github\virtuald\curvesapi\1.04\curvesapi-1.04.jar;D:\develop\Maven\repo\org\bouncycastle\bcprov-jdk16\1.44\bcprov-jdk16-1.44.jar;D:\develop\Maven\repo\com\auth0\java-jwt\3.2.0\java-jwt-3.2.0.jar;D:\develop\Maven\repo\com\fasterxml\jackson\core\jackson-databind\2.8.4\jackson-databind-2.8.4.jar;D:\develop\Maven\repo\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;D:\develop\Maven\repo\com\fasterxml\jackson\core\jackson-core\2.8.4\jackson-core-2.8.4.jar;D:\develop\Maven\repo\commons-codec\commons-codec\1.10\commons-codec-1.10.jar;D:\develop\Maven\repo\org\bouncycastle\bcprov-jdk15on\1.55\bcprov-jdk15on-1.55.jar;D:\develop\Maven\repo\com\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.3.jar;D:\develop\Maven\repo\org\quartz-scheduler\quartz\2.3.0\quartz-2.3.0.jar;D:\develop\Maven\repo\com\mchange\mchange-commons-java\0.2.11\mchange-commons-java-0.2.11.jar;D:\develop\Maven\repo\com\zaxxer\HikariCP-java6\2.3.13\HikariCP-java6-2.3.13.jar;D:\develop\Maven\repo\com\google\guava\guava\18.0\guava-18.0.jar;D:\develop\Maven\repo\top\hequehua\jfinal-swagger\0.1.5\jfinal-swagger-0.1.5.jar;D:\develop\Maven\repo\commons-io\commons-io\2.5\commons-io-2.5.jar;D:\develop\Maven\repo\cn\hutool\hutool-all\4.5.12\hutool-all-4.5.12.jar;D:\develop\idea\ideaIU-2021.2.2.win\lib\idea_rt.jar com.sxjlrj.common.config.MainConfig Connected to the target VM, address: '127.0.0.1:62873', transport: 'socket' 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: A newer version '2025.3.1' is available for download 2025-08-28 16:03:20 JRebel: from https://jrebel.com/software/jrebel/download/ 2025-08-28 16:03:20 JRebel: Starting JFinal 4.2 -> http://0.0.0.0:80 Info: jfinal-undertow 1.6, undertow 2.0.19.Final, jvm 17.0.12 2025-08-28 16:03:20 JRebel: Starting logging to file: C:\Users\shuang\.jrebel\jrebel.log 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: ############################################################# 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: JRebel Agent 2024.4.2 (202412021025) 2025-08-28 16:03:20 JRebel: (c) Copyright 2007-2024 Perforce Software, Inc. 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: Over the last 30 days JRebel prevented 2025-08-28 16:03:20 JRebel: at least 277 redeploys/restarts saving you about 0.1 hours. 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: Over the last 131 days JRebel prevented 2025-08-28 16:03:20 JRebel: at least 496 redeploys/restarts saving you about 0.1 hours. 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: License acquired from License Server: http://127.0.0.1:8888 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: Licensed to shuang. 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: You are using an offline license. 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:20 JRebel: ############################################################# 2025-08-28 16:03:20 JRebel: 2025-08-28 16:03:21 JRebel: Monitoring Log4j configuration in 'file:/D:/develop/idea/ideaProjects/JL_TOLLSYSTEM_CODE/target/classes/log4j.properties'. Add Route: /api Add Route: /manager/core/dictionary Add Route: /manager/core/dictionary/value Add Route: /manager/core/sysFunc Add Route: /manager/core/sysJob Add Route: /manager/core/sysJobLog Add Route: /manager/core/sysLog Add Route: /manager/core/sysOrg Add Route: /manager/core/sysParam Add Route: /manager/core/sysRole Add Route: /manager/core/sysServer Add Route: /manager/core/sysUser Add Route: /manager/echart Add Route: / Add Route: /manager/login Add Route: /manager/verify Add Route: /manager Add Route: /manager/toll_api_logs/tollApiLogs Add Route: /manager/toll_login_record/tollLoginRecord Add Route: /manager/toll_order/tollOrder Add Route: /manager/toll_staff/tollStaff Add Route: /manager/toll_staff_shift/tollStaffShift Add Route: /manager/toll_station_lane/tollStationLane Add Route: /manager/toll_vehicle_pass/tollVehiclePass 2025-08-28 16:03:22 [Thread: main]-[INFO]-[com.alibaba.druid.pool.DruidDataSource.init()]: {dataSource-1} inited 2025-08-28 16:03:22 [Thread: main]-[INFO]-[com.sxjlrj.common.util.job.ScheduleUtils.<init>()]: 初始化调度器=> [成功] java.lang.NullPointerException: Cannot invoke "com.jfinal.plugin.activerecord.Config.close(java.sql.Connection)" because "config" is null at com.jfinal.plugin.activerecord.Model.find(Model.java:692) at com.jfinal.plugin.activerecord.Model.find(Model.java:703) at com.jfinal.plugin.activerecord.Model.find(Model.java:710) at com.sxjlrj.manager.core.service.SysJobService.getJobs(SysJobService.java:40) at com.sxjlrj.common.util.job.ScheduleUtils.initJob(ScheduleUtils.java:43) at com.sxjlrj.common.config.MainConfig.onStart(MainConfig.java:180) at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:71) at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111) at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80) at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:589) at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:554) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:596) at com.jfinal.server.undertow.UndertowServer.configHttp(UndertowServer.java:284) at com.jfinal.server.undertow.UndertowServer.doStart(UndertowServer.java:262) at com.jfinal.server.undertow.UndertowServer.start(UndertowServer.java:159) at com.sxjlrj.common.config.MainConfig.main(MainConfig.java:43) Disconnected from the target VM, address: '127.0.0.1:62873', transport: 'socket' Process finished with exit code 1
最新发布
08-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值