开发使用的是tomcat5.5.27,对于WEB-INF/classes下面的类做了修改,tomcat就会就会自动重启,然后紧接着就是内存溢出。调试比较麻烦。昨天研究了一下tomcat的源代码,对类的加载机制作了一点点修改,让它动态加载类,这样调试的时候如果修改了java文件就不用重启 tomcat了。具体步骤如下:
修改WebappClassLoader.java文件中的modify()方法,
在745行的
return (true);注销,修改为:
// return (true);
//做了修改,重新装载
this.reloadresource(i);
return false;
然后添加一个对方法reloadresource的实现:
/**
* 重新装载的动作包括:
* 1。重新装载
* 2。更新最新时间
* @param i
*/
private void reloadresource(int i)throws NamingException{
String path = paths[i];
String tclassName = path.replaceAll(this.repositories[0], "");
String name = tclassName.replaceAll("/", ".").replaceAll(".class", "");
resourceEntries.remove(name);
this.findResourceInternal(name, tclassName);
System.out.println("重新加载了类文件:"+tclassName);
long lastModified =
((ResourceAttributes) resources.getAttributes(path))
.getLastModified();
lastModifiedDates[i] = lastModified;
//从这里加载的相当于多在paths和lastModifiedDates中多添加了冗余记录,需要删除最后一个
synchronized (allPermission) {
int j;
long[] result2 =
new long[lastModifiedDates.length - 1];
for (j = 0; j < (lastModifiedDates.length - 1); j++) {
result2[j] = lastModifiedDates[j];
}
lastModifiedDates = result2;
String[] result = new String[paths.length - 1];
for (j = 0; j < (paths.length - 1); j++) {
result[j] = paths[j];
}
paths = result;
}
}
这样就可以动态的由tomcat来加载类了。
相关推荐
开源低场MRI系统构建:从原理到三天实现
磁共振成像(MRI)作为现代医学影像的核心技术,其高场强系统存在成本和技术门槛问题。低场MRI通过开源硬件和模块化设计实现技术民主化,采用永磁体替代超导磁体可大幅降低系统复杂度。本文以H型永磁体设计为例,结合MaRCoS开源控制库和PyPulseq脉冲序列工具,展示了如何快速构建教育级MRI系统。关键技术包括遗传算法优化的匀场方案、CNC加工的梯度线圈,以及基于Red Pitaya的SDR控制架构。这种轻量化方案特别适合医学物理教学和脉冲序列开发验证,为MRI技术在资源有限地区的普及提供了新思路。
Tomcat 的类加载机制与 JVM 有何不同
类加载(Class Loading)是 JVM 的一种重要机制,是将字节码以文件形式加载到内存再经过连接、初始化后,最终形成可以被虚拟机直接使用的Java类型的过程。 JVM 类加载机制 JVM类加载采用父类委托机制,如图, JVM中包括集中类加载器: BootStrapClassLoader 引导类加载器 ExtClassLoader 扩展类加载器 AppClas...
多目标优化NSGA-II(快速精英非支配排序遗传算法)及python实现
文章目录前言一、什么是NSGA-II?二、学习NSGA-II1.快速非支配排序算法2.密度估计3.拥挤比较算子4.主循环5.代码6.总结 前言 NSGA-II适用于复杂的多目标优化问题,是K-Deb教授在2000年在一篇paper《MOEAs — A fast and elitist multi-objective genetic algorithm: nsga2》提出。 Keywords: optimization; multi-objective evolutionary algorithm; no
tomcat自动加载改变的class文件(无需重启tomcat)
不重启Tomcat有两种方式:热部署、热加载 热部署:容器状况在运行时重新部署整个项目。这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境。tomcat 6确实可以热部署了,而且对话也没丢. 热加载:最好是在调试过程中使用,免患上整个项目加载,Debug标准样式支持热加载。容器状况在运行时重 新加载转变编译后的类。在这类环境下内存不会清空,...
Proteus 8.15仿真STM32F103C8,ADC采样总为0?别急着换芯片,先检查这3个配置
本文详细解析了在Proteus 8.15中仿真STM32F103C8时ADC采样值为0的常见原因及解决方法。从供电网络配置、时钟设置到ADC参数调整,提供了系统性的排查指南,帮助开发者快速定位问题,避免不必要的硬件更换。重点关注供电网络、时钟分频和ADC配置等关键环节。
运放比较电路分析以及应用
摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。
Reloading Java Classes 301: Classloaders in Web Development — Tomcat, GlassFish, OSGi, Tapestry 5 an...
The Original link :http://zeroturnaround.com/rebellabs/rjc301/ Copyright reserved by Rebel Inc In this article we’ll review how dynamic classloaders are used in real servers, containers and fr...
Python在振动信号处理中的应用(一):振动信号消除多项式趋势项
文章目录一、概述二、最小二乘法去除趋势项原理三、python模块介绍3.1 scikitlearn简介(1)转化器(Transformer)(2)估计器(Estimator)3.2 线性回归LinearRegression3.3 多项式PolynomialFeatures3.4 工作流Pipeline四、python代码实现4.1 构造模拟信号4.2 编写去除趋势项主代码4.3 展示算法效果五、TIPS 一、概述 在振动测试过程中,传感器或采集设备由于自身性能问题或受环境干扰(如温度、供电等影响),容易
分析java.lang.OutOfMemoryError: PermGen space
SUN JDK+Tomcat 5.5.20运行服务的时候遇到问题,服务器跑几天后就会挂掉,并报java.lang.OutOfMemoryError: PermGen space异常。发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至
GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)
本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,
A算法的蒙特卡洛树搜索
A*算法的蒙特卡洛树搜索 作者:禅与计算机程序设计艺术 1. 背景介绍 在人工智能和游戏开发领域,搜索算法是一个非常重要的研究方向。其中A算法和蒙特卡洛树搜索是两种广泛应用的经典算法。A算法是一种启发式搜索算法,通过评估各个节点到目标节点的启发式代价来引导搜索方向,在
[ExtJS5学习笔记]第三十一节 sencha extjs 5使用cmd生成的工程部署到tomcat服务器
使用sencha cmd build app 生成的工程,我们期望只使用cmd打包好之后的那一个压缩后的js
(四)DDR协议命令波形时序一——(ACT、Read、Write)
文章目录一、DDR命令真值表二、ACT激活命令时序要求2.1、ACTIVATE波形——tRRD、tFAW2.2、ACTIVATE波形——tRAS、tRC三、Read命令时序要求3.1、Read 波形——无Additive Latency3.2、Read 波形——有Additive Latency3.3、Read 波形——Additive Latency使用场景 一、DDR命令真值表 DDR的Command命令由CKE、CS#、RAS#、CAS#、WE#信号组成,这几个信号进行不同的搭配组合会形成不同的Co
java替换的程序_如何替换Java中正在运行的应用程序中的类?
小编典典这是一个工作测试。每5秒钟Test.main()从文件系统重新加载test.Test1.class并调用Test1.hello()package test;public class Test1 {public void hello() {System.out.println("Hello !");}}public class Test {static class TestClassLoad...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
Tomcat 8.5.9 源码阅读(一)
本文分析了Tomcat启动类Bootstrap的核心实现,主要包括: 成员变量结构:包含日志工具、守护实例、基础路径配置及3种类加载器(common/catalina/shared) 关键方法解析: main()作为入口,处理启动参数并调度其他方法 init()初始化类加载器体系 createClassLoader()动态创建自定义类加载器 setAwait()控制启动等待行为 启动流程特点: 采用反射机制调用Catalina核心功能 通过多级类加载器实现隔离 支持多种启动/停止命令模式 (摘要共139字,
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW)
6.8.4.6.2. Tomcat 对于部署在Apache Tomcat 5.0或更高版本上的web应用,Spring将一个 TomcatInstrumentableClassLoader注册成为web应用的类加载器。 必须的Tomcat设置如下所示,你可以把它放在Tomcat WAR包根目录下的核心文件 server.xml中或放到应用特定的META-INF/cont...
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
使用Tomcat 常见 "The value for the useBean class attribute is invalid" 错误
使用Tomcat 常见 "The value for the useBean class attribute is invalid" 错误。该错误是指 JSP 中给定的 useBean 标签的 class 属性的值无效(不是 Bean 的属性值)。 在说明这个问题前,先看看有关的 Tomcat 源代码(org.apache.jasper.compiler.Generator): if (bea
449



被折叠的 条评论
为什么被折叠?



