修改 jsp 和 java 不重启 tomcat

========================1==============================

可以修改类不用重启Tomcat加载整个项目(手工启动)
配置reloadable=true(自动重载)
使用Debug模式,前提是仅限于局部修改。(修改类不用重启--热加载)

Tomcat轻小,而WebLogic、WebSphere对硬件要求比较高,吃内存、耗CUP。JBoss类更改不会重启(传说,我没用过,不知道!)。
在使用Eclipse+Tomcat开发Java项目的时候常常会碰到这样的情况,已修改Java文件Tomcat就会自动重启,接下来就是漫长的等待服务重启完毕。那其实大多数的Java文件修改是没有必要重启服务的,只有一些特定的Java文件,比如说只有重启服务的时候才会调用的Java代码才需要重启服务。
一修改java代码就重新部署(console有明显提示),且会话失效,设置服务器为debug模式(debug on server),否则修改不起作用.
什么时候应该redeploy,什么时候应该重启tomcat。如果项目大,redeploy和重启tomcat的系统开销是很大的,经常要等很长时间。
Tomcat运行时动态重载类, 实现重载功能的测试jsp。当系统中有很多类时,如果开启了Tomcat的reloadable=true,那么每当相关文件改变时,Tomcat会停止web app并释放内存,然后重新加载web app.这实在是个耗时的工程. 如果能有只重载某几个类的功能,将极大的满足我这个即时调试狂。

1.修改类不重启Tomcat(不用手动重启)
首先需要设置server.xml中的Context reloadable="true", true自动重载(不是重启!), false手动重载。(如果项目在Tomcat中,应该去Tomcat目录设置。)
Eclipse EE 设置方式,文件设置:server.xml > reloadable="false" 界面设置:Server > Modules > Edit > webapp > Auto reloading enabled > false
开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度。可以选择把其他不相关的项目先从webapps移出,这样tomcat加载的项目就少了,相应也就快了。
2.修改类不重启Tomcat有两种方式:热部署、热加载
热部署:容器状态在运行时重新部署整个项目。这种情况下一般整个内存会清空,重新加载,这种方式可能会造成sessin丢失等情况。tomcat 6确实可以热部署了,而且会话也没丢.
热加载:最好是在调试过程中使用,免得整个项目加载,Debug模式支持热加载。容器状态在运行时重新加载改变编译后的类。在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。
一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的(Eclipse、MyEclipse8、JBuilder、IntelliJ IDEA…)。
3.自动编译JSP
build Automatically
修改Tomcat源代码实现realoadable!不推荐~

===============================2==============================

eclipse下实现热部署,tomcat不重新reload context

1. 打开server的编辑器
2. 在modules页签内,修改auto load属性为disabled

-----------------------------------------------------------------------------------------------------------

以上两篇文章,是作者的一个引子,下面是作者原文:

myeclipse,eclipse都是个好工具,由于eclipse速度快,点内存小,相对家里那台老家伙,逼不得尔从myeclipse转为eclipse来开发,本来打算用IntelliJ IDEA的,但发现点内存也是相当的厉害,用了一天左右,相对来说也不是很有感觉,呵呵,那也难怪的,才一天,想有什么感觉呢?

但由于eclipse在修改类后并不会像myeclipse一样,自动热加载到tomcat的,要重新加载一次的,即重启多一次.重启时比较慢,及浪费资源及时间,何况本人操作ctrl+s的频率也是相当高的,基本上写几行就按一次,如果这样不停甘重启又重启tomcat也是相当的慢.于是google一翻,得出以下两个地址说可以修改的:

呵呵,都是javaeye博客里的文章,赞一下.但我在galileo这个版本里找来找去也找不到以上两个所说的路径,可能是版本不一致的原因,又或者真的是自己找不到吧.反正得出一个结论就是eclipse也是可以做到像myeclipse一样,修改了类后不用重新加载tomcat,当然,也会有可能出现加载不了的情况.此时可能是因为更改了类结构之类的.

参照以上的方法,发现在galileo这个版本的eclipse已经自带有服务器管理的了,在原来的servers窗口里添加tomcat即可启动,启动后会在工作空间目录下生成一个类似Server这样的文件夹,里有有一些tomcat里的配置文件,打开server.xml这个文件,找到以下行:

<Context docBase="工程名称" path="/" reloadable="true" source="org.eclipse.jst.j2ee.server:工程名称"/>

将reloadable="true"改为false,保存退出,以dubug的方式来重启tomcat,启动后再修改一下类,发现已经没有重新加载了.添加一行打印之类的,再打开页,打印已经出现.证明,已经能成功将修改后的类布署到tomcat上去了.

但,在第一次修改jsp页面后再打开的话会报一个异常,说什么类没有加载之类的,这里,再以dubug方式重启即可.

但感觉不太可靠似的,因为毕竟没经过长久的测试,如有更好的方式就告知!

=====================================
补充:
今晚在家里试了一试,按以上的办法貌似不行的,后来发现,先要将 reloadable="false" 这句先删除后,跑一次tomcat后,再停止,再恢复刚删除的那段,保存,再以dubug方式跑一次即可。有点神奇...不明所以!!

修改 jsp 和 java 不重启 tomcat,布布扣,bubuko.com

时间: 2024-12-19 18:58:56

修改 jsp 和 java 不重启 tomcat的相关文章

修改JSP页面为什么不用重启Tomcat

JSP->servlet->.clsss JSP最终要转换为class文件,为什么tomcat在修改java代码的必须先重启tomcat,反而JSP不用.? 在Tomcat的Conf/web.xml文件中,可以对Tomcat的这种对JSP修改的机制进行修改. 这是因为Tomcat对JSP进入了侦听,如果有修改,就会重新翻译成Servlet并最终编译成Class文件,替换掉原JSP页面对应的Class文件.Tomcat的内部机制是可以让这种Class文件立即生效的.而普通的Class文件修改后,

修改源代码时不需要重启tomcat服务器

我们在写JSP + Servlet 的时修改了Java代码就要重新启动服务器.十分麻烦. 为了解决这个问题我们可以将服务器改成debug 模式.就是按调试状态这样修改Java代码就不用再重新启动服务器了.只需刷新浏览器即可.可以看下面的图 当然也可以将Tomcat设置为 热启动,修改源代码时也不需要重启tomcat服务器.具体的执行方法我就不写了.大家可以去搜索下热启动的方法. 我用的是Tomcat服务器我就写了Tomcate 的解决方法.以上不足请多指教.

修改源代码时不需要重启tomcat服务器 《转载》

目前在做一个网站项目,使用MyEclipse+Tomcat,每次修改项目源代码时,都需要重启tomcat.重新导出项目到webapps文件夹或者重新部署,太麻烦.于是研究了一下tomcat如何设置成热启动,即修改源代码时不需要重启tomcat服务器.方法如下: 第一步: Tomcat安装目录下,修改 conf/server.xml 中的 Host 配置,设置其reloadable属性为true,即在Host标签中添加reloadable="true"这一句,重启Tomcat使配置文件生

jsp每次改动一下就需要重启tomcat的解决办法

我记得修改jsp是不需要重启tomcat的,但是项目遇到了只要改动jsp就需要重启tomcat,报错信息如下: java.lang.NoSuchFieldError: deferredExpression 问题产生的原因是:项目中使用的jstl.jar 问题的解决方案是:将项目中的jstl.jar替换成jstl-1.2.jar 并且把jsp页面中的c标签引入替换成如下两种形式的任意一种: <%@taglib prefix="c" uri="http://java.sun

用jrebel实现 jvm热部署,修改类不用重启tomcat

我们用eclipse开发时经常遇到一个麻烦的问题是修改类文件后需重启tomcat才能生效,即使使用一些tomcat插件,有时修改了方法名或添加了类,也需要重启.使用获得jolt大奖的作品jrebel,就能轻松实现 jvm热部署,无论任何情况修改类都不用重启tomcat 首先,下载jrebel,可到 http://fly-hyp.javaeye.com/blog/350498 ,然后配置eclipse 在启动参数中加入  -noverify -javaagent:d:/youpath/jrebel

修改jsp文件tomcat发布失败(Could not delete May be locked by another process)

突然项目修改jsp文件后,tomcat不能发布, Publishing failed with multiple errors Could not delete D:/Tomcat 6.0/webapps/Server/WEB-INF/platform/configuration/org.eclipse.core.runtime/.manager/.tmp1900396474661591532.instance. c. Could not delete D:/Tomcat 6.0/webapps

【转】JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4046862.html [前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器之间的交互,所以学一下JSP以及其他JavaWeb的内容还是很有必要的,至少能明白程序在访问服务器时,整个过程的原理. 其实,在学习Android之前,Java和JavaWeb

Linux下定时重启Tomcat(修改)

1.写一个shell脚本test.sh,重新启动tomcat [java] view plaincopy #!/bin/sh . /etc/profile pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'` echo $pid if [ -n "$pid" ] then { echo ===========shutdown================ /opt/tomcat/

eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)

我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的webapps以下,没有看到我部署的项目 同一时候,work文件夹(jsp的工作文件夹)以下也没有生成相关的jsp的class文件和java源文件.可是我想看源代码啊.找了一堆关于jsp的源代码位置的文章,都说是在work以下能够找到.后来在不断的尝试下,我搜索了keyword server loc