zoukankan      html  css  js  c++  java
  • SpringBoot部署jar与war

    jar部署与启动/关闭

    1.打包

    clean 清理已有target目录

    package 重新打包

    获取打包路径,通过 scp命令发送到服务器端,scp -P ${port} ${.jar} ${user}@${ip}:/${target-absolote-path}。 此处无需密码,已登记公钥于服务器端。
    2.服务端启动关闭脚本

     启动脚本:

    #!/bin/sh
    
    rm -f tpid_summary
    
    nohub java -jar server/rosetta-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
    
    echo $! > tpid_summary
    
    echo Start Success!

    : jar 启动时,注意命令前追加 nohub 指令 ,  即 不挂断的执行命令. 避免,shell关闭造成Java应用的关闭

    关闭脚本:

    #!/bin/sh
    tpid=`cat tpid_summary | awk '{print $1}'`
    tpid=`ps -aef | grep $tpid | awk '{print $2}' | grep $tpid `
    if [ ${tpid} ]; then
             kill -9 $tpid
         fi

    3.执行测试

    启动及运行相关错误可通过日志查看。重点在于SpringBoot 2.0.*需要JDK1.8以上版本,/etc/profile中的JAVA_HOME路径需指向8及以上版本的JDK。

    查看配置:echo $JAVA_HOME

    推荐profile修改,不推荐直接export。

    修改完毕后,source 重载配置

    jar的部署较为简单,无需赘述。

    war于Tomcat下的部署与启动

     1.配置tomcat无需多写,一般只需修改 conf/server.xml相关端口即可

    2.打war包

    2.1 pom.xml中packaging jar>war

        <groupId>net.rosetta</groupId>
        <artifactId>rosetta</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>    

    2.2 打包时剔除tomcat组件

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    </dependency>

    2.3 原main方法启动类无需变更,同级目录新增下述 SpringBootStartApplication 类即可

    public class SpringBootStartApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
            // 指向用main方法执行的application启动类
            return builder.sources(TextclfApplication.class);
        }
    }

    2.4 clean package 发送war包至tomcat /webapps下

    2.5 command

    2.5.1 jar转war的核心在于应用入口的变更 , 只需继承SpringBootServletInitializer类,并实现起configure方法即可,此处也可以不用新建启动类,在原启动类的基础上新增上述代码即可.

    2.5.2 由于SpringBoot的自动装配功能,提高了开发效率的同时,也回造成麻烦,如下异常:

    org.springframework.beans.factory.BeanCreationException:
       Error creating bean with name 'dataSource' defined in class path resource
        [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]:
          Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
          Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception;
          nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:
            Failed to determine a suitable driver class

    这一问题的关键在于,springboot项目启动默认会去寻找dataSource的配置,而很多时候应用中不必有与关系型数据库的交互,此时需要在auto-config时取消 DataSourceAutoConfiguration类的调度,代码如下:

    @SpringBootApplication(exclude ={DataSourceAutoConfiguration.class} )
    public class ImageRetrievalApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(ImageRetrievalApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ImageRetrievalApplication.class, args);
        }
    }

    注意 : 有些博客提示为添加 EnableAutoConfiguration注解,然而SpringBoot 1.2就已在SpringBootApplication整合了该注解,其对应的功能已包含,无需画蛇添足.

    3.启动tomcat

    bin/startup.sh 启动

    bin/shutdown.sh 关闭

    再次强调,JDK版本为1.8+

    启动日志可于 /logs/catalina.out中查看。

    注意:默认访问路径为:ip:port/project-name/request-mapping。同时,页面调用路径需设为相对路径,即去除 "/"

    ps:Ubuntu下开发,windows大同小异

  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/nyatom/p/9110469.html
Copyright © 2011-2022 走看看