spring boot 部署为jar

前言

一直在ide中敲代码,使用命令行mvn spring-boot:run或者gradlew bootRun来运行spring boot项目。想来放到prod上面也应该很简单。然而今天试了下,各种问题。最大错误是1.4的bug:

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL

这个错误使我一直以为自己的代码有问题。找了半天没找到,最后想既然命令行可以运行ok,那么一个fat jar失败肯定不对了。于是上github去问,以为石沉大海准备睡觉的。想不到的是spring boot的成员秒回,找到问题是1.4版本中hibernate自动配置的问题,想我根本不需要hibernate,删除就可以了。

github 原问题:https://github.com/spring-projects/spring-boot/issues/6927

部署为可运行的jar

spring boot已经尽可能把需要配置的东西自动化了,我还傻傻的像以前springmvc那样补充各种配置,比如加一个数据源druid。然而大可不必,使用默认的就好,等需求不满足的时候,在进行修改就可以了。

同样的,既然内置的tomat可以很好的运行,为啥非要自己手动部署war包?

在gradle build或者maven package之后,会得到一个jar,这个jar是spring boot修改过的jar,可以直接运行。 运行方式:

java -jar xxxx.jar

看到比较好的linux脚本:

start.sh

#!/bin/sh

rm -f tpid

nohup java -jar xx.jar --spring.profiles.active=dev > /dev/null 2>&1 &

echo $! > tpid

echo Start Success!

stop.sh

#!/bin/sh
APP_NAME=myapp

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

check.sh

#!/bin/sh
APP_NAME=myapp

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
        echo 'App is running.'
else
        echo 'App is NOT running.'
fi

kill.sh

#!/bin/sh
APP_NAME=myapp

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
fi

博主不得转载,但还是看了怎么办: Spring Boot 部署与服务配置

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿天地

Elastic-Job动态添加任务

背景 在使用Elastic-Job的过程中,有很多人遇到了这么一个问题,就是如何动态的去添加任务? 在官方的文档中也有对此作出回答,如下: 动态添加作业这个概念...

3577
来自专栏张泽旭的专栏

【腾讯云的1001种玩法】Nginx + Tomcat 负载均衡配置详解

Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结...

7530
来自专栏北京马哥教育

Linux 运维必备的 13 款实用工具,拿好了~

本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 运维人员有所帮助。 1. 查看进程占用带宽情况 - Nethogs Nethogs 是一个...

3208
来自专栏木子昭的博客

向浏览器输入网址,到完成请求的整个过程

向浏览器输入网址 http://www.baidu.com/ 查询本地计算机有没有存储域名baidu.com 对应的服务器IP, 如果存储了,浏览器直接向目标...

2687
来自专栏程序猿DD

如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布?

将应用程序部署到 Kubernetes 时,有很多选择。像 Helm 和 Ksonnet 这样的工具使得打包应用程序并将其部署到多个 Kubernetes 环境...

3445
来自专栏FreeBuf

短小精干的Unix类后门Tiny shell的使用与分析

0x00. 简介 Tiny Shell 是一款开源的Unix类后门shell工具,由C语言编写,体积小(在kali系统上编译后只有55K大小) ? 分为客户端和...

2945
来自专栏北京马哥教育

Nginx配置与应用详解

前言 Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大...

3965
来自专栏Jackson0714

不惧面试:HTTP协议(1) - 基础扫盲

2757
来自专栏FreeBuf

新手指南:DVWA-1.9全级别教程之SQL Injection

目前,最新的DVWA已经更新到1.9版本(点击原文查看链接),而网上的教程大多停留在旧版本,且没有针对DVWA high级别的教程,因此萌发了一个撰写新手教程的...

2508
来自专栏PhpZendo

Jerry Qu 博客 Nginx 配置之性能篇

在介绍完我博客(imququ.com)的 Nginx 配置中与安全有关的一些配置后,这篇文章继续介绍与性能有关的一些配置。WEB 性能优化是一个系统工程,涵盖很...

502

扫描关注云+社区