`
sammor
  • 浏览: 409550 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

提高开发效率之tomcat免重启(随意更改java代码)

    博客分类:
  • J2EE
阅读更多

     做为了一个java开发人员,总是为因为要增加一个类,或是增加删除一个方法,甚至修改一个小处代码而不得不再次重启服务器。而启动服务器总是那么的浪费时间。一个小时的编程 10 分钟左右,这效率....

    

     而php有java更有优势在于它是动态加载的。而为什么java就不可以呢?

   

     你想要什么?可以加方法?可以加类?可以动态的随意更改java代码又不重启服务器?

 

     现在这些都可以实现了,今天重大发现这些都可以做到了。java也变为和php一样可以动态的更改了。

 

 

今天听到了这么一个发现,觉得确实很好,现在在这里和大家分享下。

 

要做到这样功能需要对本机有所配置一下:

 

安装步骤:

1、 windows 启动安装程序,在控制台输入 :

> java -jar dcevm-0.2-win.jar (路径放到dcevm-0.2-win.jar的文件夹)下面附件下载

等一会儿,这时会出现一个程序框。选择一个jdk,再install。完成后test一下(安装完成没有提示,差不多的时间就点test看一下,如果成功就是安装好了)

 

   安装程序会替换掉 java bin/client/jvm.dll bin/server/jvm.dll ,并将以后的 jvm.dll 备份到相应目录下。还会将 dcevm.jar 加到 lib/ext/ 目录 .

 

2、eclipse端的修改

 

eclipse.ini 文件里面最后加入:(这里面要把原有的部分去掉一些)

-vmargs

-Xms128M

-Xmx512M

-XX:PermSize=64M

-XX:MaxPermSize=512M

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-XX:+TraceClassLoading

-XX:+TraceClassUnloading

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-verbose:gc

-Xloggc:gc.log

 

 

我的修改完之后是这样的

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M


-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=64M 
-XX:MaxPermSize=512M 
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+TraceClassLoading 
-XX:+TraceClassUnloading
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log

 

重启一下eclipse看是否可以正常启动,这样的就配置完成了。

 

接下来是做个小试验。

1、在你的web程序下,debug状态启动tomcat。(注意在要debug状态下

 

当你的程序正常运行后,要你想在改动的地方java代码,更改下,再重新刷下页面就明白了。(如果还是不成功,可以和我交流下)

 

相关文档学习:

1、 http://www.slideshare.net/wangscu/hotspot-hotswap-who-and-who-are-best-freinds

2、http://rdc.taobao.com/team/jm/ (感谢oznyang提供)。

 

p.s:我是在remoteDebug状态下做的,大家试试看哦。

 

有什么问题大家可以提出来,互相学习。

分享到:
评论
67 楼 qnwang 2011-05-31  
楼上的大哥能不能教教小弟,怎么把WTP的autoloading去掉?万分感谢!
66 楼 theoffspring 2011-05-30  
这是扯吧,在spring里dao之类的都定义成单例了,你这个不会导致抛异常吧
65 楼 suyulin6688 2011-05-27  
还是 jRebel 好用,强悍得多。
64 楼 java_bigniu 2011-05-27  
用eclipse jee 没这么麻烦
不知道新增方法和字段怎么样
63 楼 steinyxu 2011-05-23  
报hot code replace failed。。。
62 楼 carcar123 2011-05-23  
liuhanjun 写道
呵呵,,想做到跟php那样的?,貌似是扯淡吧。重启就重启嘛,慢点就慢点咯,趁机让大脑休息片刻也是好事啊,,费那个劲干啥?

61 楼 sammor 2011-05-21  
jilen 写道
jetty啊jetty。

jetty可是动态编译修改的类,不用重启?
找个时间我也学习学习这个东东。
60 楼 jilen 2011-05-20  
jetty啊jetty。
59 楼 phenom 2011-02-16  
intellij idea10在debug模式下如果只编译单个类,就只加载单个类,不会重启猫
58 楼 qiming1988 2011-02-15  
我试一下,那以后就方便多了……
57 楼 mgcnrx11 2011-02-13  
看到不少出现异常的例子

在开发中,请问怎样分辨异常是替换jvm后产生还是程序的问题?这又带来新的问题了
56 楼 liuhanjun 2011-02-13  
呵呵,,想做到跟php那样的?,貌似是扯淡吧。重启就重启嘛,慢点就慢点咯,趁机让大脑休息片刻也是好事啊,,费那个劲干啥?
55 楼 sulong 2011-02-13  
adamrain 写道
tomcat在这方面还不行,Resin跟JBoss早就已经可以了

你是指jboss的热布署吗?那实际上把整个war或者ear重新部署了一遍,还是很慢。
54 楼 maike 2011-02-12  
下来测试下
53 楼 sswh 2011-02-12  
lym6520 写道
在接口中增加了一个方法,调用的时候报如下错误:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
...
Caused by: java.lang.AbstractMethodError: $Proxy121.getMoreNumberCondition(Ljava/lang/String;)Ljava/lang/String;

重启tomcat后调用正常。


涉及到动态代理的类是会出错,这种情况下只能重启了。
52 楼 jkltyy 2011-02-12  
很好用。
eclipse下取消automatically publish
51 楼 lym6520 2011-01-24  
在接口中增加了一个方法,调用的时候报如下错误:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
...
Caused by: java.lang.AbstractMethodError: $Proxy121.getMoreNumberCondition(Ljava/lang/String;)Ljava/lang/String;

重启tomcat后调用正常。
50 楼 sswh 2011-01-12  
谢谢 RednaxelaFX

今天试了一下,我用的是JDK1.6.0.16 效果很不错  在Class中添加方法、字段的确不需要重启了。

投精华,的确太给力了!!!
49 楼 longer042 2011-01-12  
报错啊。。。。

jdk1.6


Exception in thread "HouseKeeper" java.lang.NullPointerException
	at org.logicalcobwebs.proxool.HouseKeeperController.getHouseKeeperToRun(HouseKeeperController.java:53)
	at org.logicalcobwebs.proxool.HouseKeeperThread.run(HouseKeeperThread.java:33)
48 楼 RednaxelaFX 2011-01-12  
sswh 写道
适用的JDK版本是多少?不会是任意JDK都可以用吧?

JDK1.3、1.4、1.5、1.6都可以??

请阅读官方文档
引用
The JAR files are executable and contain an installer, so it is necessary to install a JRE or JDK beforehand. It is recommend to use the latest JDK7 binary snapshot available at https://jdk7.dev.java.net/, but the binary should also work with JDK6 or JRE6 installations. Make sure to launch the installer with sufficient privileges.

也就是最好是使用JDK7,而JDK6也应该可以。当前版本是使用JDK7-b102为基础build出来的。

相关推荐

    修改java代码以及js无需重启tomcat

    配置tomcat,使其在修改java源码以及js代码时无需重启tomcat,但是在修改xml文件时需要重新部署tomcat

    java代码启动tomcat

    java实现tomcat的自启动和关闭,可实现远程控制tomcat

    修改java 不重启tomcat

    修改java 不重启tomcat jrebel 4.x

    tomcat自动重启脚本

    linux系统tomcat自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat

    Tomcat与Java Web开发技术详解源代码.rar

    《Tomcat与Java Web开发技术详解》一书的示例源代码

    tomcat与java web源代码

    本书详细介绍了在最新Tomcat 5版本上开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术,Tomcat与当前其他通用软件的集成,以及Tomcat的各种高级功能。 书中内容...

    tomcat 定时重启工具

    由于工作需求,本人自己制作的 Tomcat 定时重启小工具,监听Tomcat的CMD运行窗口,计算运行时间,来完成 定时重启任务,配置可以自动临时保存,不生成多余文件。打算在后续版本中加入一个 HTTP监听任务,判断是否宕...

    基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip

    基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat ...

    修改java类而无需重启tomcat.rar

    使用以下方法可以修改java类而无需重启tomcat: 下载javarebel.zip 解压后,将javarebel.jar拷贝到一个目录。/bin 目录下 修改tomcat安装目录下的\bin\catalina.bat文件, 增加set JAVA_OPTS=-noverify -javaagent:d...

    Tomcat与Java.Web开发技术详解源代码

    Tomcat与Java.Web开发技术详解源代码 Tomcat与Java.Web开发技术详解源代码

    linux定时自动重启TOMCAT

    linux定时自动重启TOMCAT,SHELL脚本, 按制定时间启动脚本,并自动查找TOMCAT进程,关闭TOMCAT进程,然后再启动TOMCAT进程,服务器压力过大,或遭受攻击时,TOMCAT集群时自动维护出问题的TOMCAT。

    Tomcat自动重启脚本

    用于Tomcat自动重启脚本,避免直接 -9 杀死服务,此脚本使用循环杀进程

    Tomcat与java.web开发技术详解

    Tomcat与java.web开发技术详解,介绍了Tomcat javabean jsp等技术的使用

    Tomcat 与Java web开发技术详解(孙卫琴)

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    定时重启tomcat

    首先修改jsp.bat中的两个路径,其中set JAVA_HOME后面是jdk路径,下面是tomcat路径;运行,执行注册。 然后修改tomcat.bat中的ping 127.0.0.1 -n 5(暂停时间) 最后将tomcat.bat添加的计划任务中就ok了。

    Windows重启Tomcat脚本

    这是一个经过测试(WindowsServer 2008)的Tomcat重启脚本,可以放心使用

    java代码-解决求ubunt安装mysql、Tomcat、mqtt的问题java源代码

    java代码-解决求ubunt安装mysql、Tomcat、mqtt的问题java源代码 ——学习参考资料:仅用于个人学习使用

    tomcat宕机重启脚本

    tomcat宕机重启脚本,比较简单的一种设置

    tomcat定时重启方案

    里面有 tomcat 定时重启的配置方法跟步骤

Global site tag (gtag.js) - Google Analytics