基于嵌入式Tomcat的War包启动器

这篇具有很好参考价值的文章主要介绍了基于嵌入式Tomcat的War包启动器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近针对java项目的部署方式进行整理,jenkins/tomcat/windows工具/linux脚本/web部署平台等等

发现war包通过tomcat部署比较繁琐,等待时间长,配置规则复杂对于小白很不友好,也难以接入到自定义的部署工具/平台中

之前开发的Jar包部署平台是servlet开发通过嵌入式tomcat部署,借此打开思路

能否基于嵌入式tomcat做一个war包启动器,通过代码的方式开启tomcat容器来部署war包

源码地址:https://gitee.com/code2roc/jar-manage/tree/master/waragent

借此启动器可以将war包部署集成到自己的工具平台中,将启动器的jar包按普通方式部署即可

方案

tomcat启动一般需要几个基本参数设置

  • war包路径
  • 端口
  • 映射路由
Tomcat tomcat = new Tomcat();
tomcat.setPort(port);
StandardContext ctx = (StandardContext) tomcat.
addWebapp(contextPath, catalinaBase + File.separator + "webapps" + File.separator + name + ".war");

tomcat9启动还需要指定cookie处理策略,否则无法识别

CookieProcessor cookieProcessor = new LegacyCookieProcessor();
ctx.setCookieProcessor(cookieProcessor);

后续实际使用中还涉及到了启动jvm参数设置及jar包扫描跳过的配置

tomcat.getEngine().setJvmRoute(jvmStartCommand);
StandardJarScanner jarScanner = new StandardJarScanner();
StandardJarScanFilter jarScanFilter = new StandardJarScanFilter();
jarScanFilter.setTldSkip(skipScan);
jarScanFilter.setPluggabilitySkip(skipScan);
jarScanner.setJarScanFilter(jarScanFilter);
ctx.setJarScanner(jarScanner)

打包

原来预想把maven项目打到一个jar包方便调用,但是打包插件会把依赖jar包中的class文件进行合并

嵌入式tomcat依赖的jar包有相同包名的,导致class文件覆盖,websocket相关内容报错

所以把依赖jar包打入到同级lib文件夹中,和waranaget.jar一起拷贝使用

 <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.code2roc.waragent.Application</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <!-- 拷贝依赖的jar包到lib目录 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

使用

java -jar waragent.jar "启动参数"

启动参数一定要用双引号包含,这样才能正确解析

定义:"$appname★$warFilePath★$port★$contextPath★$jvmParam★$skipScan"

示例:"testwar★D:\testwar.war★9091★/testwar★-Xms3072m -Xmx3072m -Djava.awt.headless=true★xxx*.jar"

内部使用★分开,一共6个参数,最后一个参数可省略,其余必填文章来源地址https://www.toymoban.com/news/detail-514795.html

  • 参数1:应用名称
  • 参数2:war包绝对路径
  • 参数3:端口号
  • 参数4:映射路由(contextPath)
  • 参数5:jvm启动参数,主要指定内存大小
  • 参数6:启动扫描跳过jar包名称,多个使用,分开

到了这里,关于基于嵌入式Tomcat的War包启动器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI绘画——本地配置webui启动器教程,支持一键启动/修复/更新/模型下载管理+Lora模型推荐

    秋葉aaaki的个人空间_哔哩哔哩_bilibili https://space.bilibili.com/12566101/?spm_id_from=333.999.0.0 感谢 秋葉aaaki大佬の免费开源 目录 1.获取资源整合包 2. 下载并配置webui启动器  3.启动器功能  4.一键启动,开始实战 5.效果演示  露出鸡脚哩  幻想景色加上lora模型xiaorenshu  刘亦菲图生图

    2024年02月03日
    浏览(42)
  • ISCSI:后端卷以LVM 的方式配置 ISCSI 目标启动器

    准备考试整理相关笔记 博文内容涉及使用 LVM 做ISCSI 目标后端块存储 Demo 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随

    2024年02月08日
    浏览(28)
  • 手写超级好用的rabbitmq-spring-boot-start启动器

    手写超级好用的rabbitmq-spring-boot-start启动器   由于springBoot官方提供的默认的rabbitMq自动装配不是那么好用,一个项目中只能配置使用一个rabbitMq的服务器,队列也需要编码的方式定义,这种繁杂且不易使用,用一次需要写一次硬编码,之前有一个想法是,能不能使用springB

    2024年04月13日
    浏览(37)
  • 【MC教程】iPad启动Java版mc(无需越狱)(保姆级?) Jitterbug启动iOS我的世界Java版启动器 PojavLauncher

    本教程不需要iPad或者iPhone越狱 教程视频链接:https://www.bilibili.com/video/BV1wW4y1b7QM/ 众所周知,苹果上的应用是ipa文件(相当于安卓的apk文件),在下载非app store上的应用就是在下载对应的ipa文件,然后对于本期教程需要知道以下两点。 在苹果设备上,光有ipa文件还不够,还需

    2023年04月25日
    浏览(34)
  • 前端调用 Stable diffusion 秋叶启动器 Web-Ui API

    在启动器启动前,开启启用 API 就可以调用 通过访问 API DOCS 查看完整的接口地址。 POST 请求体以 JSON 形式发送。 以 axios 为例: 文生图 地址:/sdapi/v1/txt2img 参数说明 图生图 地址:/sdapi/v1/img2img 其中 init_images 参数可以是服务文件路径也可以是 base64

    2024年02月08日
    浏览(51)
  • win10系统提示:“重新启动以修复驱动器错误”解决办法

    最近一段时间台式机的window10系统突然提示:“重新启动以修复驱动器错误”。博主本来置之不理,但是系统自动重启了,然后也没自动修复成功,伴随而来的是两天频繁的蓝屏现象。过去的很长一段时间里,都没有出现过该问题,因此花了两天解决 系统蓝屏和驱动错误的问

    2024年02月04日
    浏览(33)
  • 解决 Minecraft 官方启动器 报错找不到 launcher.dll / LoadErrorNotPresent 的解决方法

    如果你用的是Windows 10操作系统基本上不用看这个文章了,应该帮不到你,Windows 10的更新中应该是自带这个补丁的。 在 Windows 7 SP1 系统上,安装 Minecraft官方启动器 之后,启动启动器时出现报错信息。 点击确定之后出现 查询日志 %appdata%.minecraft 下的 launcher_log.txt 有显示 SSL

    2024年02月07日
    浏览(105)
  • 【嵌入式学习笔记】嵌入式基础9——STM32启动过程

    程序段交叉引用关系(Section Cross References):描述各文件之间函数调用关系 删除映像未使用的程序段(Removing Unused input sections from the image):描述工程中未用到被删除的冗余程序段(函数/数据) 映像符号表(Image Symbol Table):描述各符号(程序段/数据)在存储器中的地址、类

    2024年02月15日
    浏览(68)
  • 【AI绘画】个人电脑部署免费AI绘画软件——Stable Diffusion webui启动器

    二次元 2.5d 机甲风 ai绘画,也叫“ai作画”、“人工智能绘画”,即通过 AI 生成技术得到画作或图片。ai作画由来已久,有许多创作ai绘画作品的方式,包括基于规则的图像生成算法、深度学习算法。最近火爆全网的是通过文本描述生成绘画的形式,大家或许会疑惑,AI 生成图

    2024年02月11日
    浏览(60)
  • SpringBoot源码解读与原理分析(二十七)嵌入式Tomcat

    当Web应用需要部署运行时,传统的做法是将项目打包成war包,然后部署到外置的Web容器中(如最常用的Tomcat容器)。 SpringBoot的一大重要特性是支持嵌入式Web容器,基于SpringBoot的Web应用仅凭一个单独的jar包即可独立运行。 8.1.1 嵌入式Tomcat与普通Tomcat 嵌入式Tomcat是一种可以嵌

    2024年02月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包