tomcat热部署

配置tomcat

直接访问tomcat的Manager App页面可能会出现403 Access Denied错误,需要对tomcat进行配置

  1. 修改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>
    
  2. 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>
    
  3. 重启tomcat,进入tomcat主页,点击”Manager App“,会弹出窗口要求输入用户名和密码,输入之前配置的用户名和密码即可访问。

部署项目

用的IDE是Intellij IDEA

  1. 添加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>
    
  2. 部署到服务器

    如果是第一次部署,点击tomcat7:deploy

    以后每次部署点击tomcat7:redeploy(-only可跳过单元测试)

  3. 内存泄漏问题

    以上方法可能会导致内存泄露问题

    上面的消息显示部署的blog项目存在内存泄漏,如果同一项目多次重新部署,则一个项目名可能会出现多次。

    部署时产生内存泄漏的原因是每次(重新)部署时,Tomcat会为项目新建一个类加载器,而旧的类加载器没有被GC回收。maven的库classloader-leak-prevention-servlet可以用来解决这个问题。

参考博客:

部署+内存溢出

内存溢出

posted @ 2019-12-24 21:27  它山之玉  阅读(740)  评论(0编辑  收藏  举报