• Tomcat系列(11)——Tomcat 部署web应用的4种方法


    核心内容

    1.在Tomcat中有四种部署Web应用的方式,分别是:

    (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下)

    (2)利用控制台进行部署(tomcat的manager控制台的deploy区域

    (3)增加自定义的Web部署文件(%Tomcat_Home%confCatalinalocalhostAppName.xml)

    (4)手动修改%Tomcat_Home%confserver.xml文件来部署web应用

    2.SpringBoot WEB项目两种发布和部署方式

    (1)通过WAR包

    (2)通过JAR包(官网推荐)

    3.springboot有3中热部署方式:
    (1)使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动
    (2)使用springloaded本地加载启动,配置jvm参数   -javaagent:<jar包地址> -noverify
    (3)使用devtools工具包,操作简单,但是每次需要重新部署

    1. Tomcat中有四种部署Web应用的方式

    第一种方式:利用Tomcat自动部署

            利用Tomcat自动部署方式是最简单的、最常用的方式。若一个web应用结构为D:workspaceWebAppAppNameWEB-INF*,只要将一个Web应用的WebContent级的AppName直接扔进%Tomcat_Home%webapps文件夹下,系统会把该web应用直接部署到Tomcat中。所以这里不再赘述。

    第二种方式:利用控制台进行部署

            若一个web应用结构为D:workspaceWebAppAppNameWEB-INF*,利用控制台进行部署的方式如下:进入tomcat的manager控制台的deploy区域——在Context path中键入"XXX"(可任意取名)——在WAR or Directory URL:键入D:workspaceWebAppAppName (表示去寻找此路径下的web应用)——点击deploy按钮。

      

              然后在%Tomcat_Home%webapps路径下将会自动出现一个名为XXX的文件夹,其内容即是D:workspaceWebAppAppName的内容,只是名字是XXX而已(这就是前面在Context path键入XXX的结果)。

    以上说明利用控制台进行部署的实质仍然是利用Tomcat的自动部署。

    第三种方式:增加自定义的Web部署文件

            若一个web应用结构为D:workspaceWebAppAppNameWEB-INF*,这种部署方式稍微复杂一点,我们需要在%Tomcat_Home%conf路径下新建一个文件夹catalina——再在其中新建一个localhost文件夹——最后再新建一个XML文件,即增加两层目录并新增XML文件:%Tomcat_Home%confCatalinalocalhostweb应用配置文件.xml ,该文件就是部署Web应用的配置文件。

      例如,我们新建一个%Tomcat_Home%confCatalinalocalhostXXX.xml,  该文件的内容如下:

     <Context path="/XXX" reloadable="true" docBase="D:workspaceWebAppAppName" workDir="D:workspaceWebAppwork"/> 注意: (1)以上代码中的workDir表示将该Web应用部署后置于的工作目录(Web应用中JSP编译成的Servlet都可在其中找到),如果使用的Eclipse作为IDE,一般可人为设置在WebApp的work目录下。 如果自定义web部署文件XXX.xml中未指明workdir,则web应用将默认部署在%Tomcat_Home%workCatalinalocalhost路径下新建的以XXX命名的文件夹下。(Web应用中JSP编译成的Servlet都可在其中找到) (2)Context path即指定web应用的虚拟路径名。docBase指定要部署的Web应用的源路径。

            其实开发者可以使用安装有Tomcat插件eclipse自动创建部署文件来部署Web应用而不必再手动建立该文件,方法如下: 

    1. 打开Eclipse——打开菜单栏window选择preference(首选项)——左侧选择Tomcat,如下图示:

            2. 可以看到上图中高亮画出的Context declaration mode(Context 声明模式)中选择以Context files增加自定义部署文件的形式部署web应用——然后Contexts directory中指定上述文件的上级目录(即%Tomcat_Home%confCatalinalocalhost )——点击Apply或OK。

            3. 完上述步骤,再选中Web项目右键点击properties(属性)——选择右侧的Tomcat ,如下图所示:

          4. 勾上"Is a Tomcat project"前的checkbox,将项目关联至Tomcat。

    在Context name中填入XXX,即Web应用自定义部署文件名和Context path名。

    在Subdirectory to set as web application root (optional)中填入要部署的Web应用的实际路径(即WEB-INF上级目录)。

    注意:Eclipse会自动地将workdir设置在WorkspaceWebAppwork下。

    如此便自动创建了%Tomcat_Home%confCatalinalocalhostXXX.xml 文件。启动Tomcat 即可自动部署Web应用。

    第四种方式:手动修改%Tomcat_Home%confserver.xml文件来部署web应用

             此方法即打开%Tomcat_Home%confserver.xml文件并在其中增加以下元素:

       <Context docBase="D:workspaceWebAppAppName" path="/XXX" debug="0" reloadable="false" />

             然后启动Tomcat即可。

             当然如果使用Eclipse,在Eclipse中的设置也有改变:打开菜单栏window选择preference(首选项)——左侧选择Tomcat——可以看到上图中高亮画出的Context declaration mode(Context 声明模式)中选择以Server.xml文件来部署web应用。

      

    2. SpringBoot WEB项目两种发布和部署方式

    (1)通过WAR包

    (2)通过JAR包(官网推荐)

    1. WAR

      传统的部署方式:将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即可访问。

      步骤1:在pom.xml文件中将jar修改为war【<packaging>war</packaging>

      步骤2:在pom.xml文件中将配置文件添加tomcat模块【】  

    <!-- 不使用内置的tomcat  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 移除tomcat插件 -->
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <!-- 移除之后会报错,加入下面的依赖 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>
    
    
    <!-- 使用内置的tomcat  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
          <artifactId>provided</artifactId><!--仅用于编译和测试-->
    </dependency>

      步骤3:在main方法处的启动类基继承

       

      步骤4:在pom.xml点击右键选择Maven install,会在target文件夹中生成xxx.war包

    2. JAR

      步骤1:在pom.xml文件点击右键,选择“Maven install”,然后刷新target文件夹,在target中会产生xxx.jar包。

      步骤2:然后在cmd终端输入代码:java -jar xxx.jar ,发布成功

      步骤3:在浏览器输入localhost等url进行访问

    3. JAR VS WAR

      

    4. 线上部署

    方式一:java -jar vodmanager.jar &           后台关闭后,服务不会中断

    方式二:nohup java -jar vodmanager.jar &  后台关闭后,服务不会中断,并且会把输出的文件信息写在当前目录下的nohup文件中。

    3. SpringBoot热部署三种方式

    springboot有3中热部署方式:
    1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动
    2.使用springloaded本地加载启动,配置jvm参数   -javaagent:<jar包地址> -noverify
    3.使用devtools工具包,操作简单,但是每次需要重新部署

    第一种:使用springloaded配置pom.xml文件

    1. 原来的pom.xml文件中添加如下配置
    <build>
         <plugins>
              <plugin>
                   <groupId>org.springframework.boot</groupId>
                   <artifactId>spring-boot-maven-plugin</artifactId>
                   <dependencies>
                        <dependency>
                             <groupId>org.springframework</groupId>
                             <artifactId>springloaded</artifactId>
                             <version>1.2.6.RELEASE</version>
                        </dependency>
                   </dependencies>
              </plugin>
         </plugins>
    </build>

            注意:需要在spring-boot-maven-plugin中添加dependency

     
    2.启动方式变为maven启动:在项目的文件夹dos窗口输入命令mvn spring-boot:run
     
        注意:停止服务是只能使用ctrl+c, 如果设置后台启动,需要kill进程

    第二种:springloaded本地加载启动,配置jvm参数

    1.下载springloaded工具包到一个指定目录(或直接就用maven仓库地址了)
    2.在启动项目时,在jvm参数中输入命令
      -javaagent:D:Maven epositoryorgspringframeworkspringloaded1.2.6.RELEASEspringloaded-1.2.6.RELEASE.jar -noverify
     
    扩展: -javaagent:命令后面跟冒号,意思是在执行main方法之前执行特定代码
           -noverify 关闭java字节码校验功能

    第三种:使用devtools工具包

    1.在pom.xml中添加依赖
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <optional>true</optional>
    </dependency>
    2.启动项目
     

    总结

    在开发测试环境下第三种可取,方便快捷
    在生产环境下,建议使用第二种,使用脚本启动

    抄录网址

    1. tomcat部署web应用的4种方法
    2. Spring Boot项目的两种发布方式
    3. 开发笔记9:SpringBoot打包部署的三种方式
    4. Spring-Boot启动方式,以及线上部署
  • 相关阅读:
    for循环
    while循环语句的几种方式
    IF....Else循环
    Python——文件读取
    数据结构之二叉树
    JAVA的免费天气api接口调用示例
    JAVA API
    JAVA爬虫代码
    普通网页怎么改成响应式布局
    循环遍历二叉树
  • 原文地址:https://www.cnblogs.com/haimishasha/p/10791454.html
Copyright © 2020-2023  润新知