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大同小异

  • 相关阅读:
    购物车案例详解。利用cookie
    设计模式8种
    设计模式介绍
    Promise
    面向对象-拖拽
    本地存储
    闭包和继承
    move.js
    CDM指南之Agent管理
    失业的程序员九创业就是一场戏
  • 原文地址:https://www.cnblogs.com/nyatom/p/9110469.html
Copyright © 2011-2022 走看看