首页 > 其他分享 >基于嵌入式Tomcat的War包启动器

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

时间:2023-07-02 17:56:01浏览次数:48  
标签:启动器 Tomcat tomcat 部署 jar war 参数 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个参数,最后一个参数可省略,其余必填

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

标签:启动器,Tomcat,tomcat,部署,jar,war,参数,War
From: https://www.cnblogs.com/yanpeng19940119/p/17521097.html

相关文章

  • Tomcat 部署及优化
    目录一、Tomcat概述1.介绍二、Tomcat核心组件1.有哪些系列的组件结构(1)Web容器(2)JSP容器(3)Server容器(4)扩展2.核心组件如何进行交互(1)Tomcat架构图(2)交互流程图3.功能组件结构三、Tomcat处理请求内部数据流向1.Tomcat请求过程2.详细请求过程3.总结四、Tomcat部署1.准......
  • Vmware Tools工具安装-Linux(转载自“半夏微凉”)
    本文转载自“半夏微凉”,仅用于自己的学习记录,方便日后查找。若有侵权行为,请联系本人进行删除。转载自:VmwareTools工具安装-Linux-半夏微凉(lentim.com)VmwareTools工具安装  背景:需要使用vmware安装oracle数据库,但linux机由于没有安装vmwaretools无法跟主机共享文件,......
  • tomcat默认用户名密码修改
     在CATALINA_HOME/conf/tomcat-users.xml文件中。编辑这个文件,可以修改用户名和密码,例如添加一个名为“manager”的角色到该文件中:<rolename="manager"><username="manager"password="admin"roles="manager"/>然后重新启动Tomcat。......
  • docker swarm 集群部署Kafka3.5,彻底告别zookeeper
    介绍本次部署kafka3.5版本,彻底告别zookeeper时代,部署更加轻量,运维更加简单同时使用比较好用的kafka控制台redpandadatadockerswam集群搭建详见我的另一篇博客DockerSwarm集群搭建,不再这里赘述。docker-compose文件准备docker-compose-kafka3-cluster.ymlversi......
  • MATLAB仿真Gough-Stewart并联机器人斯图尔特6自由度并联机器人逆运动学仿真 动力学控
    MATLAB仿真Gough-Stewart并联机器人斯图尔特6自由度并联机器人逆运动学仿真动力学控制pid控制1.搭建了六自由度Stewart并联机器人simulinksimscape仿真模型2.建立了逆向运动学仿真输入位置和姿态求解各个杆长3.运用pid控制器进行动力学跟踪控制使用MATLAB进行了Gough-Stewar......
  • linux Tomcat
    摘要:Tomcat非常重要的一种服务,三个容器,web容器,jsp容器,servlet容器,可以实现web服务。目录一、tomcat原理二、tomcat核心组件三、tomcat处理请求四、tomcat部署五、tomcat主要目录六、tomcat虚拟机配置七、tomcat优化八、tomcat多实例部署九、java虚拟机调优       ......
  • 解决vmware的fedora34或者部分linux系统不能全屏的问题
    参考:https://manjaro.site/how-to-enable-full-screen-mode-fedora-34-on-vmware-workstation/如果安装了open-vm-tools后,vmware内的linux系统依然不能全屏,可能是因为系统使用的不是传统的XWindowSystem,而是XWayland,open-vm-tools对XWanyland的支持有时侯会有问题。解决方法:......
  • Python错误:requests请求设置verify=False时日志中有warning信息
    问题描述:在requests做请求的时候,为了避免ssl认证,可以将verify=False,但是这么设置会带来一个问题,日志中会有大量的warning信息,如下面:D:\ProgramFiles\Python\lib\site-packages\urllib3\connectionpool.py:1045:InsecureRequestWarning:UnverifiedHTTPSrequesti......
  • mysql: [Warning] Using a password on the command line interface can be insecure.
      https://zhuanlan.zhihu.com/p/542166965 ......
  • Windows下Tomcat的安装配置
    一、下载相应的JDK以及Tomcat的版本JDK:jdk-8u131-windows-x64tomcat:apache-tomcat-8.5.23-windows-x64.zip二、JDK的安装请参考:三、Tomcat的安装第一步:从官网下载apache-tomcat-8.5.23-windows-x64.zip,下载地址:https://tomcat.apache.org/whichversion.html第二步:将下载......