配置 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 对应的用户名和密码;
输入密码后,即可进入管理控制台;
image
配置 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 项目可正常远程部署;