最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java基于嵌入式Tomcat的War包啟動(dòng)器

 更新時(shí)間:2023年07月03日 08:37:44   作者:code2roc  
本文主要介紹了java基于嵌入式Tomcat的War包啟動(dòng)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近針對java項(xiàng)目的部署方式進(jìn)行整理,jenkins/tomcat/windows工具/linux腳本/web部署平臺等等

發(fā)現(xiàn)war包通過tomcat部署比較繁瑣,等待時(shí)間長,配置規(guī)則復(fù)雜對于小白很不友好,也難以接入到自定義的部署工具/平臺中

之前開發(fā)的Jar包部署平臺是servlet開發(fā)通過嵌入式tomcat部署,借此打開思路

能否基于嵌入式tomcat做一個(gè)war包啟動(dòng)器,通過代碼的方式開啟tomcat容器來部署war包

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

借此啟動(dòng)器可以將war包部署集成到自己的工具平臺中,將啟動(dòng)器的jar包按普通方式部署即可

方案

tomcat啟動(dòng)一般需要幾個(gè)基本參數(shù)設(shè)置

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

tomcat9啟動(dòng)還需要指定cookie處理策略,否則無法識別

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

后續(xù)實(shí)際使用中還涉及到了啟動(dòng)jvm參數(shù)設(shè)置及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)

打包

原來預(yù)想把maven項(xiàng)目打到一個(gè)jar包方便調(diào)用,但是打包插件會(huì)把依賴jar包中的class文件進(jìn)行合并

嵌入式tomcat依賴的jar包有相同包名的,導(dǎo)致class文件覆蓋,websocket相關(guān)內(nèi)容報(bào)錯(cuò)

所以把依賴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 “啟動(dòng)參數(shù)”

啟動(dòng)參數(shù)一定要用雙引號包含,這樣才能正確解析

定義:“a p p n a m e ★ appname★appname★warFilePath★p o r t ★ port★port★contextPath★j v m P a r a m ★ jvmParam★jvmParam★skipScan”

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

內(nèi)部使用★分開,一共6個(gè)參數(shù),最后一個(gè)參數(shù)可省略,其余必填

  • 參數(shù)1:應(yīng)用名稱
  • 參數(shù)2:war包絕對路徑
  • 參數(shù)3:端口號
  • 參數(shù)4:映射路由(contextPath)
  • 參數(shù)5:jvm啟動(dòng)參數(shù),主要指定內(nèi)存大小
  • 參數(shù)6:啟動(dòng)掃描跳過jar包名稱,多個(gè)使用,分開

到此這篇關(guān)于java基于嵌入式Tomcat的War包啟動(dòng)器的文章就介紹到這了,更多相關(guān)java War啟動(dòng)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java秒殺系統(tǒng)常見問題庫存超賣解決實(shí)例分析

    java秒殺系統(tǒng)常見問題庫存超賣解決實(shí)例分析

    這篇文章主要為大家介紹了java秒殺系統(tǒng)常見問題庫存超賣解決實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Java對象和Map之間相互轉(zhuǎn)換的五種方法

    Java對象和Map之間相互轉(zhuǎn)換的五種方法

    在Java開發(fā)中,經(jīng)常需要將Java對象轉(zhuǎn)換成Map,或者反過來將Map轉(zhuǎn)換成Java對象,這種轉(zhuǎn)換在很多場景下都非常有用,比如在序列化和反序列化過程中、在數(shù)據(jù)傳輸和持久化時(shí)、或者在進(jìn)行對象屬性的批量操作時(shí),本文將介紹幾種不同的方法來實(shí)現(xiàn)Java對象和Map之間的相互轉(zhuǎn)換
    2025-02-02
  • Maven依賴沖突的成因與解決方案

    Maven依賴沖突的成因與解決方案

    在?Java?企業(yè)級開發(fā)中,依賴管理是每個(gè)開發(fā)者繞不開的核心課題,隨著項(xiàng)目規(guī)模擴(kuò)大、模塊增多、第三方庫引入頻繁,JAR?包版本沖突幾乎成為家常便飯,本文將深入剖析?Maven?依賴沖突的成因、表現(xiàn)形式及排查方法,需要的朋友可以參考下
    2025-12-12
  • 如何調(diào)用chatGPT實(shí)現(xiàn)代碼機(jī)器人

    如何調(diào)用chatGPT實(shí)現(xiàn)代碼機(jī)器人

    最近c(diǎn)hatGPT也是非常的火爆,相信大家都看到了,現(xiàn)在提供一種Java調(diào)用chatGPT的方法,我們主要通過兩個(gè)工具來實(shí)現(xiàn),一就是httpclient,二就是hutool,你覺得那種好理解你就用那種即可,今天通過本文給大家分享調(diào)用chatGPT實(shí)現(xiàn)代碼機(jī)器人,感興趣的朋友一起看看吧
    2022-12-12
  • 在java中獲取List集合中最大的日期時(shí)間操作

    在java中獲取List集合中最大的日期時(shí)間操作

    這篇文章主要介紹了在java中獲取List集合中最大的日期時(shí)間操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 手把手帶你掌握SpringBoot RabbitMQ延遲隊(duì)列

    手把手帶你掌握SpringBoot RabbitMQ延遲隊(duì)列

    RabbitMQ 是一個(gè)由Erlang語言開發(fā)的AMQP的開源實(shí)現(xiàn),支持多種客戶端。用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗,下文將帶你深入了解 RabbitMQ 延遲隊(duì)列
    2021-09-09
  • Java中十進(jìn)制字符串轉(zhuǎn)十六進(jìn)制的性能解讀

    Java中十進(jìn)制字符串轉(zhuǎn)十六進(jìn)制的性能解讀

    這篇文章主要介紹了Java中十進(jìn)制字符串轉(zhuǎn)十六進(jìn)制的性能解讀,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java基礎(chǔ)教程之對象的方法與數(shù)據(jù)成員

    Java基礎(chǔ)教程之對象的方法與數(shù)據(jù)成員

    這篇文章主要介紹了Java基礎(chǔ)教程之對象的方法與數(shù)據(jù)成員,本文講解對象的方法與數(shù)據(jù)成員相關(guān)知識,因?yàn)閖ava是面向?qū)ο笳Z言,本文的知識都是經(jīng)常要用到的,需要的朋友可以參考下
    2014-08-08
  • 了解spring中的CloudNetflix Hystrix彈性客戶端

    了解spring中的CloudNetflix Hystrix彈性客戶端

    這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠(yuǎn)程服務(wù)發(fā)生錯(cuò)誤或表現(xiàn)不佳時(shí)保護(hù)遠(yuǎn)程資源(另一個(gè)微服務(wù)調(diào)用或者數(shù)據(jù)庫查詢)免于崩潰。,需要的朋友可以參考下
    2019-06-06
  • java 愷撒加密/解密實(shí)現(xiàn)原理(附帶源碼)

    java 愷撒加密/解密實(shí)現(xiàn)原理(附帶源碼)

    本文介紹Java實(shí)現(xiàn)愷撒加密與解密,通過固定位移量對字母進(jìn)行循環(huán)替換,保留大小寫及非字母字符,由于其實(shí)現(xiàn)簡單、易于理解,愷撒加密常被用作學(xué)習(xí)加密算法的入門案例,感興趣的朋友一起看看吧
    2025-08-08

最新評論

铜山县| 连州市| 马公市| 肥东县| 旌德县| 周口市| 云梦县| 永寿县| 婺源县| 周口市| 玛多县| 阳江市| 溧水县| 美姑县| 旅游| 丹阳市| 水城县| 二手房| 石狮市| 灵武市| 神池县| 吉林省| 莱阳市| 泰州市| 凌源市| 元江| 台北县| 阿巴嘎旗| 鲜城| 宁国市| 杭州市| 郯城县| 南昌县| 兖州市| 池州市| 手游| 大方县| 舒城县| 横峰县| 景东| 岗巴县|