配置 tomcat 的 manager
1、修改 tomcat服务器下的 /conf/tomcat-users.xml 文件,在尾部添加如下内容;
<role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin" password="password" roles="manager-script"/> <user username="root" password="password" roles="manager-gui"/>
将上述 password 改成自己需要的密码,保存退出;
2、在 tomcat服务器下的 /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;
3、浏览器输入:http://serverip:port/manager/html,输入用户名和密码,此处的密码为 manager-gui 对应的用户名和密码;
输入密码后,即可进入管理控制台;
配置 maven 项目
1、修改 maven 项目的 pom.xml 文件,在 plugins 节点下,添加如下 plugin 节点;
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://serverip:port/manager/text</url> <!-- manager-script 对应的用户和密码 --> <username>admin</username> <password>password</password> <update>true</update> <path>/webapp</path> </configuration> </plugin>
2、执行 maven 命令,进行自动化部署;
第一次部署:mvn tomcat7:deploy
(对于 tomcat 8,9 均使用此命令)
更新部署:mvn tomcat7:redeploy
防止内存泄漏
部署时产生内存泄漏的原因是每次(重新)部署时,Tomcat会为项目新建一个类加载器,而旧的类加载器没有被GC回收;
maven 提供了一个库 classloader-leak-prevention-servlet 可以用来解决这个问题;
1、maven 的 pom.xml 中添加依赖;
<dependency> <groupId>se.jiderhamn.classloader-leak-prevention</groupId> <artifactId>classloader-leak-prevention-servlet</artifactId> <version>2.1.0</version> </dependency>
2、项目的 web.xml 中,添加一个 Listener(此监听器必需为 web.xml 中的第一个 Listener,否则无效)
<listener> <listener-class>se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorListener</listener-class> </listener>
至此,内存泄漏问题解决,maven 项目可正常远程部署;