java热部署:tomcat运行中,动态修改配置文件(java文件)中的static属性并生效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java热部署:tomcat运行中,动态修改配置文件(java文件)中的static属性并生效相关的知识,希望对你有一定的参考价值。
tomcat在运行期间,动态修改配置文件(java文件或class文件)中的static属性,修改后的属性在tomcat不需要重启的情况下立即生效。求java大神提供解决方案!
<Context path="/tomcatTest" reloadable="true" docBase="E:\workplace\testProject\WebRoot"/>第一个是容器里的项目path 要加/
第二个参数是你的workplace的路径,一般是到webroot
写个context.xml文件,放到项目的META-INF里.context.xml头部像上面那样写就可以 参考技术A apollo 配置中心
IntelliJ IDEA12 怎么热部署,每次修改java文件就得重启tomcat
确保使用的是debug模式。
确保tomcat是由idea实例化的。也就是说tomcat是在idea中配置好的
(特殊的修改如:项目配置文件,某些特殊类新增,方法名称参数的添加修改引起的不能热部署就必须重启,当然你也可以用Jrebel插件。此插件收费。可以实现大部分的修改热部署,包括修改项目配置文件等热部署。以下描述均指的是普通的修改下的热部署。)
项目配置如图:
当修改文件后,ctrl+F9,编译文件。tomcat会自动加载新文件。
On frame deactivation选项同样可以选择为 update classes and Resource选项。它的作用就是在你失去焦点的时候自动编译。例如:修改某文件后你直接切换到了浏览器,或者点了下别的。只要当前的intellij idea 不是焦点就会激活自动编译并更新文件动作。也就是说不用手动按ctrl+F9了。
所有以上操作,请确保是在DEBUG模式下操作。也就是运行tomcat的时候是debug模式启动的。
在idea tomcat 中server的配置里,有个on frame deactivation,选择update classes and resources。另外有个配置on update action,就是手动操作的时候采取什么动作,可以重启服务器,也可以像上面一样更新类和资源文件,我选的是Redeploy。 可是当前项目没有update classes and resources这个选项,有个Hot Swap classes。
这是由于服务器添加的Artifact类型问题,一般一个module对应两种类型的Artifact,一种是war,一种是war explored。
war就是已war包形式发布,当前项目是这种形式,在这种形式下on frame deactivation配置没有update classes and resources选项。war explored是发布文件目录,选择这种形式,on frame deactivation中就出现update classes and resources选项了。本回答被提问者和网友采纳
以上是关于java热部署:tomcat运行中,动态修改配置文件(java文件)中的static属性并生效的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA12 怎么热部署,每次修改java文件就得重启tomcat