您的位置:

如何正确设置Tomcat热部署

一、热部署的概念

热部署是指在应用程序运行期间对程序的代码或配置文件进行更改,在不重启应用程序的情况下立即生效。Tomcat作为一个开源的Java Web容器,也支持热部署功能。开启Tomcat的热部署可以提高应用程序的开发效率,但同时也需要注意到操作的正确性,以避免出现错误。

二、引用Tomcat Manager实现热部署

Tomcat内置的Manager和Host Manager应用程序都可以用于部署和卸载Web应用程序。为了实现热部署,我们可以使用Tomcat Manager中的/persistent热部署功能。

首先需要在conf目录下的tomcat-users.xml文件中添加管理员账号信息:

<tomcat-users>
   <user username="tomcat" password="password" roles="manager-script"/>
</tomcat-users>

然后在context.xml文件中添加Manager的配置信息:

<Context privileged="true">
    <!-- other contexts here -->
 
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
          allow="127\.0\.0\.1|192\.168\.0\.\d{1,3}"/>
 
    <!-- This is the file that needs to be edited to setup the Manager -->
    <!-- WARNING -->
    <!-- This file will be overwritten on every redeploy. To change Tomcat properties, -->
    <!-- Configure them with CATALINA_OPTS or setenv.sh/setenv.bat -->
    <Manager className="org.apache.catalina.manager.ManagerServlet"
             shutdown="SHUTDOWN"
             path=""
             sessionAttributeValueClassNameFilter="java\.lang\.(?:String|Boolean|Long|Double)"
             />
</Context>

然后我们可以通过访问http://localhost:8080/manager/text/deploy?path=/myapp&war=file:/usr/local/tomcat/webapps/myapp.war实现Web应用的部署,这时在myapp.war文件发生改变时将会触发热部署。

三、使用JRebel插件实现热部署

JRebel是一个Java热部署插件,它可以在Tomcat和其他Java Web服务器容器上实现无需重启即可部署、调试和测试应用程序的功能。下面是JRebel使用示例:

在Tomcat/bin目录下运行sudo ./catalina.sh run,并启动IntelliJ IDEA:

sudo ./catalina.sh run

在IntelliJ IDEA中,选择菜单栏Run -> Edit Configurations,新增一个Tomcat Server的配置,将JRebel Server添加到JVM参数中:

-agentpath:/path/to/jrebel/lib/libjrebel64.so

然后在Tomcat的conf/context.xml文件中增加如下Listener:

<Context path="/" docBase="/path/to/myapp">
   <!-- other elements -->
   <!-- Add this at the end of the Context -->
   <Listener className="org.zeroturnaround.jrebel.tomcat6.JrebelLifecycleListener" />
</Context>

这样就可以启动应用程序,并通过JRebel实现热部署了。

四、使用Maven实现热部署

Maven也可以实现Tomcat的热部署功能,具体使用步骤如下:

在pom.xml文件中增加以下插件,其中Tomcat6为需要热部署的版本号:

<project>
   <!-- other elements -->
   <build>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <version>tomcat6</version>
            <configuration>
               <url>http://localhost:8080/manager/text</url>
               <server>Tomcat</server>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

添加Tomcat服务器管理员账号和密码配置:

<settings>
   <servers>
      <server>
         <id>Tomcat</id>
         <username>tomcat</username>
         <password>password</password>
      </server>
   </servers>
</settings>

使用mvn tomcat:run命令启动Tomcat服务:

mvn tomcat:run

这样你就可以使用相应的工具或者IDE编辑你的代码,并且在进行代码修改后不需要进行重新部署,Tomcat会自动检测到Web应用程序的更改。

五、使用IDEA插件实现热部署

IntelliJ IDEA可以通过Tools -> Deployment -> Options -> 确定两个选项来实现热部署:

  1. 1) Upload changed files automatically to the default server
  2. 2) On 'Update' action, synchronize all affected files

勾选上这两个选项之后,如果你修改了Java类或JSP文件,IDEA将自动将你的Web应用程序部署到Tomcat上。