zoukankan      html  css  js  c++  java
  • Spring Boot 项目用外部Tomcat部署实践

    一. 新建spring boot工程

    1. 把项目打包方式改为war包

    <groupId>com.example</groupId>
    <artifactId>tomcat-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    2. 引入spring-boot-starter-tomcat

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 设置为provided, 在打包时会将该包排除,因为要放到独立的tomcat中运行,不需要。 -->
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-tomcat</artifactId>
    	<scope>provided</scope>
    </dependency>

    3.  修改启动类,继承 SpringBootServletInitializer 重写 configure 方法,并加入测试方法hello()。

    @RestController
    @SpringBootApplication
    public class TomcatDemoApplication extends SpringBootServletInitializer{
    
    	public static void main(String[] args) {
    		SpringApplication.run(TomcatDemoApplication.class, args);
    	}
    
    	@GetMapping("/hello")
    	public String hello() {
    		return "hello world";
    	}
    
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    		return builder.sources(TomcatDemoApplication.class);
    	}
    }

    4. 打包(跳过测试)

    package -DskipTests

    二. 把项目部署到Tomat中

    1. 把打好的war包放到Tomcat的webapp/ROOT目录下并解压

    [root@rocketmq-nameserver1 ROOT]# pwd
    /home/zhaoxing/apache-tomcat-8.5.32/webapps/ROOT
    [root@rocketmq-nameserver1 ROOT]# ls
    tomcat-demo-0.0.1-SNAPSHOT.war
    [root@rocketmq-nameserver1 ROOT]# unzip tomcat-demo-0.0.1-SNAPSHOT.war 
    Archive:  tomcat-demo-0.0.1-SNAPSHOT.war
       creating: META-INF/
       inflating: META-INF/MANIFEST.MF    
       creating: org/
       creating: org/springframework/
       creating: org/springframework/boot/
       creating: org/springframework/boot/loader/
       creating: org/springframework/boot/loader/data/
       ...  
    [root@rocketmq-nameserver1 ROOT]# ls
    META-INF  org  tomcat-demo-0.0.1-SNAPSHOT.war  WEB-INF

    2. 在Tomcat bin目录下启动脚本start.sh

    [root@rocketmq-nameserver1 ROOT]# cd /home/zhaoxing/apache-tomcat-8.5.32/bin/
    [root@rocketmq-nameserver1 bin]# ls
    bootstrap.jar       commons-daemon.jar            daemon.sh         setclasspath.sh  startup.sh            tool-wrapper.sh
    catalina.bat        commons-daemon-native.tar.gz  digest.bat        shutdown.bat     tomcat-juli.jar       version.bat
    catalina.sh         configtest.bat                digest.sh         shutdown.sh      tomcat-native.tar.gz  version.sh
    catalina-tasks.xml  configtest.sh                 setclasspath.bat  startup.bat      tool-wrapper.bat
    [root@rocketmq-nameserver1 bin]# ./startup.sh 
    Using CATALINA_BASE:   /home/zhaoxing/apache-tomcat-8.5.32
    Using CATALINA_HOME:   /home/zhaoxing/apache-tomcat-8.5.32
    Using CATALINA_TMPDIR: /home/zhaoxing/apache-tomcat-8.5.32/temp
    Using JRE_HOME:        /opt/jdk1.8.0_172
    Using CLASSPATH:       /home/zhaoxing/apache-tomcat-8.5.32/bin/bootstrap.jar:/home/zhaoxing/apache-tomcat-8.5.32/bin/tomcat-juli.jar
    Tomcat started.
    [root@rocketmq-nameserver1 bin]# ps -ef |grep tomcat
    root      64030      1 66 10:58 pts/0    00:00:06 /opt/jdk1.8.0_172/bin/java -Djava.util.logging.config.file=/home/zhaoxing/apache-tomcat-8.5.32/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /home/zhaoxing/apache-tomcat-8.5.32/bin/bootstrap.jar:/home/zhaoxing/apache-tomcat-8.5.32/bin/tomcat-juli.jar -Dcatalina.base=/home/zhaoxing/apache-tomcat-8.5.32 -Dcatalina.home=/home/zhaoxing/apache-tomcat-8.5.32 -Djava.io.tmpdir=/home/zhaoxing/apache-tomcat-8.5.32/temp org.apache.catalina.startup.Bootstrap start
    root      64047  63968  0 10:58 pts/0    00:00:00 grep --color=auto tomcat

    3. 测试

    [root@rocketmq-nameserver1 bin]# curl http://127.0.0.1:8080/hello
    hello world[root@rocketmq-nameserver1 bin]# 

    注:主机上访问关闭防火墙

  • 相关阅读:
    button label textfield对齐 textview UI样式
    iOS真机测试
    Android学习
    CoreMontion加速计
    一些用xib加载主界面的过程
    英特尔公司
    CISC和RISC
    Terminating app due to uncaught exception 'NSGenericException' 类崩溃文章收集
    UICollectionView 介绍 <转>
    流媒件应用FreeStreamer 学习2
  • 原文地址:https://www.cnblogs.com/codestarer/p/13635536.html
Copyright © 2011-2022 走看看