tomcat热部署
配置tomcat
直接访问tomcat的Manager App页面可能会出现403 Access Denied错误,需要对tomcat进行配置
-
修改tomcat目录下的
conf/tomcat-user.xml
文件,添加用户配置,配置权限和用户名密码<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <!-- 添加如下配置 --> <role rolename="manger-script"/> <role rolename="manager-gui"/> <user username="tomcat" password="tomcat" roles="manager-script,manager-gui"/> </tomcat-users>
-
在
conf/Catalina/localhost/
目录下创建manager.xml文件<?xml version="1.0" encoding="UTF-8"?> <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </Context>
-
重启tomcat,进入tomcat主页,点击”Manager App“,会弹出窗口要求输入用户名和密码,输入之前配置的用户名和密码即可访问。
部署项目
用的IDE是Intellij IDEA
-
添加maven插件
在项目的pom.xml文件中添加tomcat插件(tomcat7,8,9均可用)
<build> <plugins> <!--tomcat plugin--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://101.132.194.42:8080/manager/text</url> <username>username</username> <password>password</password> <update>true</update> <path>/system</path> <!-- war文件路径缺省情况下指向target --> <!--<warFile>${basedir}/target/${project.build.finalName}.war</warFile>--> </configuration> </plugin> </plugins> </build>
-
部署到服务器
如果是第一次部署,点击tomcat7:deploy
以后每次部署点击tomcat7:redeploy(-only可跳过单元测试)
-
内存泄漏问题
以上方法可能会导致内存泄露问题
上面的消息显示部署的blog项目存在内存泄漏,如果同一项目多次重新部署,则一个项目名可能会出现多次。
部署时产生内存泄漏的原因是每次(重新)部署时,Tomcat会为项目新建一个类加载器,而旧的类加载器没有被GC回收。maven的库classloader-leak-prevention-servlet可以用来解决这个问题。
参考博客: