一、IDEA服务器热部署

场景:

  一般服务器(如tomcat、jboss等)启动后,如果需要进一步修改java代码,或者是jsp代码,一般来说,修改完后重启服务器才能生效。

  但是如果配置了服务器的热部署,就可以改完代码后立即生效。这样就节省了大量的时间。


两个选项:

idea 用services重启springcloud的服务慢 idea怎么重启服务器_运行模式


On Update action : 当代码改变的时候,需要IDEA为你做什么;

On Frame deactivation : 当失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么。


On Update action里有4个选项(一般选Update classes and resources)

1)Update resources :如果发现有更新,而且更新的是资源文件(*.jsp,*.xml等,不包括java文件),就会立刻生效。

2)Update classes and resources : 如果发现有更新,这个是同时包含java文件和资源文件的,就会立刻生效。

注意:

在运行模式下:

1-- java 修改后,会被编译成.class 然后覆盖到target/kao文件夹下,IDE调试模式的情况下,立即生效。IDE运行模式下,不立即生效,需要redeployed才可生效。

2-- jsp文件修改后,再次被访问的时候,会自动更新,重新编译cheng.java。-->.class 保存在tomcat的work目录下。由于是访问时才检测是否修改,是否需要重新编译,所以 IDE 运行模式 和 IDE调试模式下,都是立即生效。刷新下页面就可。

debug模式下:修改jsp和java文件时可以立刻生效的。当然,两种运行模式下,修改resources资源文件都是可以立刻生效的。

3)Redploy : 重新部署,发布到tomcat里,不重启tomcat,而是把原来的删掉,然后重新发布。

4)Restart : 重启服务器。

 



On Frame deactivation 

1)Do nothing : 不做任何事 (一般推荐这个,因为失去焦点的几率太大)。

2)Update resources : 失去焦点后,修改的resources文件都会立刻生效

3)Update classes and resources : 失去焦点后,修改的java ,resources文件都会立刻生效。

注意:

在运行模式下:jsp是 update classes and resources 是立即生效的,但是.java文件修改后 并不会立即生效。

debug模式下:jsp和java文件修改 都会立即生效。


附注:

如果Artifact是war包形式的话,On Update action与On frame deactivation中的选项也是不一样的:没有Update resources和 Update classes and resources这种选项,取而代之的是Hot Swap Classes选项,本质的意思是一样的。



server.xml文件中

自动部署

<Host name="localhost" appBase="webapps"  
       unpackWARs="true" autoDeploy="true"  
       xmlValidation="false" xmlNamespaceAware="false"> 
</host>

autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用。

热部署

<Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" >   
</Context>

reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件,
如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化,
自动装载新的JSP和Servlet,我们可以在不重启Tomcat的情况下改变web application 。