V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
noble4cc
V2EX  ›  Java

现在 springboot 都使用内置的 tomcat 还是打包成 war 用其他的 tomcat

  •  
  •   noble4cc · 2020-01-06 11:30:46 +08:00 · 5406 次点击
    这是一个创建于 1761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哪种更方便些呢?

    31 条回复    2020-01-10 23:37:16 +08:00
    sumarker
        1
    sumarker  
       2020-01-06 11:55:25 +08:00
    论方便肯定是内置的 tomcat 直接 jar 包最方便了,启动 直接 java -jar

    替换直接整体替换.

    但是修改内容,就最好把他放在 外部的 tomcat 里.毕竟 jar 包修改也确实不是很方便
    Takamine
        2
    Takamine  
       2020-01-06 12:12:41 +08:00 via Android
    内置的。(´▽`)ノ♪
    luozic
        3
    luozic  
       2020-01-06 12:15:58 +08:00
    跑 CI/CD,只要项目内部统一,这部分脏活可以用脚本自动化解决。
    MeteorCat
        4
    MeteorCat  
       2020-01-06 12:35:44 +08:00 via Android
    内置写 system 成服务,实际上我感觉公司也不管怎么启动,他们能跑起来就行........
    chendy
        5
    chendy  
       2020-01-06 13:42:55 +08:00
    论方便肯定是 jar 包
    JerryX
        6
    JerryX  
       2020-01-06 13:50:28 +08:00
    看吧,
    要是懒得研究 linux 注册 jar 成服务,就打 war,并且可以避免由于 resultType 没有写全限定名导致可能出现的问题(详情可以了解一下 mybatis-spring-boot-starter);
    打 jar 的话反正就是方便维护嘛,也可以直接扔到 docker 这种容器里。
    看你爱不爱折腾了
    ARhen
        7
    ARhen  
       2020-01-06 15:56:59 +08:00
    最近在改老项目的配置文件,发现放在外置的 tomcat 下我起码还能直接修改配置文件,或者直接替换某一个 class
    打成 jar 运行的话,有点无从下手了
    老项目我也不想这样搞,但是重新打包发布会导致出更多莫名的问题,尤其是不熟悉项目的时候。

    war、jar 无非就是看公司统一习惯
    optional
        8
    optional  
       2020-01-06 16:42:10 +08:00
    fatjar
    GoRoad
        9
    GoRoad  
       2020-01-06 16:46:35 +08:00
    有 cicd 的话 哪种都一样
    yinzhili
        10
    yinzhili  
       2020-01-06 16:50:18 +08:00   ❤️ 1
    @ARhen 修改配置的这个问题很好解决,配置文件不要放到 jar 里面,所有的配置参数都放到单独的配置中心就好了
    zhchyu999
        11
    zhchyu999  
       2020-01-06 17:03:09 +08:00
    用 systemd 启动没有带系统环境变量进去
    glaucus
        12
    glaucus  
       2020-01-06 17:06:40 +08:00   ❤️ 1
    @ARhen #7 你可以把配置文件放到 jar 同一目录,我记得是优先加载的,后者就没办法了
    chenshun00
        13
    chenshun00  
       2020-01-06 17:15:55 +08:00
    解压
    abcbuzhiming
        14
    abcbuzhiming  
       2020-01-06 17:26:57 +08:00
    @ARhen 你不知道基于 spring boot 的 jar 包是可以用外置配置文件的吗
    HolmLoh
        15
    HolmLoh  
       2020-01-06 17:27:23 +08:00
    这让我想起了我们公司有个老员工
    他平时发布项目,从本地 tomcat 用 root 登进去,
    HolmLoh
        16
    HolmLoh  
       2020-01-06 17:31:00 +08:00
    还没写完,就不小心回复了 ...

    这让我想起了我们公司有个老员工
    他平时发布项目,从本地 tomcat 找项目,然后打 zip 包,用 root 登进去,解压重启
    问他为啥不打 war,或者直接用 spring 自带的,他回答说 Linux 可能识别不了 war 包,最好打 zip 包
    我:黑人问号.jpg
    glacial
        17
    glacial  
       2020-01-06 17:36:42 +08:00
    @HolmLoh 你得问他知不知道什么是 war 包
    HolmLoh
        18
    HolmLoh  
       2020-01-06 17:51:14 +08:00
    @glacial #17
    难说
    前两天过完年假回来,发现我测试环境的项目没了,问另一个同事怎么回事,才知道原来他在 tomcat 跑的时候把 war 全给删了
    还好不是生产
    refkent
        19
    refkent  
       2020-01-07 10:02:42 +08:00
    用 jetty jar 2333
    thinkmore
        20
    thinkmore  
       2020-01-07 10:08:56 +08:00
    我们用的内置的,直接上 kuberetes,爽歪歪
    zhenjiachen
        21
    zhenjiachen  
       2020-01-07 11:30:09 +08:00
    推荐 docker 加 google 的 jib 打包插件,速度很快
    Aresxue
        22
    Aresxue  
       2020-01-08 10:34:48 +08:00
    @ARhen jar 的话可以直接用 vim 修改的,而且本身 spring 也提供了配置文件外置的方式(个人觉得不好用), 配置这块最好还是使用专业的配置中心,也有利于配置的复用和管理,比如阿里的 nacos
    ARhen
        23
    ARhen  
       2020-01-08 12:36:28 +08:00
    @abcbuzhiming 嗯嗯,这个之前还真不知道
    @Aresxue 昨天刚看了 nacos 的部分视频,只了解它可以作为 rpc 远程调用,查询服务名,方便绑定和修改调用的 ip 和端口
    还不知道它可以代替直接读取 application.properties。那有一个 apollo 配置中心也是类似的嘛?
    ARhen
        24
    ARhen  
       2020-01-08 12:38:17 +08:00
    @HolmLoh 我现在还是用的这种方式,只不过是打的 war,每个项目一个 tomcat,然后放入对应的 tomcat 里面。
    然后./bin/start.sh 启动
    HolmLoh
        25
    HolmLoh  
       2020-01-08 12:49:57 +08:00
    @ARhen #24
    没有觉得这种方式发布有啥问题,主要是作为一个工作好几年的人来说,不认识 war 包实在不应该..
    Aresxue
        26
    Aresxue  
       2020-01-08 13:32:36 +08:00
    @ARhen 对的,比较适合分布式架构,集中管理配置文件,还可以实现一些开关值的动态刷新(数据库连接这种不会重新建立)
    ARhen
        27
    ARhen  
       2020-01-08 14:12:53 +08:00
    @HolmLoh 嗯,我没用过 zip 这种,war 包放进去,tomcat 启动不久自动解压了?

    @Aresxue 我去试试,不过看到资料都是结合 SpringCloud 的,我试试结合 SpringBoot
    HolmLoh
        28
    HolmLoh  
       2020-01-08 14:20:09 +08:00
    @ARhen #27
    是啊,tomcat 启动的时候如果丢 war 包进去会自动解压的
    chihiro2014
        29
    chihiro2014  
       2020-01-09 00:46:20 +08:00
    看公司吧,个人习惯还是打包 jar。war 都没什么人用了
    KentY
        30
    KentY  
       2020-01-10 23:34:00 +08:00
    我们这个项目是 170 多个 springboot apps, 用的 openshift, 根本不打 jar/war
    KentY
        31
    KentY  
       2020-01-10 23:37:16 +08:00
    说的不对.. 其实也打, jenkins 打 jar, 直接 push 到 oc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 21:29 · PVG 05:29 · LAX 14:29 · JFK 17:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.