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

java基于嵌入式Tomcat的War包啟動器

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

前言

最近針對java項目的部署方式進行整理,jenkins/tomcat/windows工具/linux腳本/web部署平臺等等

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

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

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

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

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

方案

tomcat啟動一般需要幾個基本參數(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啟動還需要指定cookie處理策略,否則無法識別

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

后續(xù)實際使用中還涉及到了啟動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項目打到一個jar包方便調(diào)用,但是打包插件會把依賴jar包中的class文件進行合并

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

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

啟動參數(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個參數(shù),最后一個參數(shù)可省略,其余必填

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

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

相關(guān)文章

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

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

    這篇文章主要為大家介紹了java秒殺系統(tǒng)常見問題庫存超賣解決實例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    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ù)傳輸和持久化時、或者在進行對象屬性的批量操作時,本文將介紹幾種不同的方法來實現(xiàn)Java對象和Map之間的相互轉(zhuǎn)換
    2025-02-02
  • Maven依賴沖突的成因與解決方案

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

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

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

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

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

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

    手把手帶你掌握SpringBoot RabbitMQ延遲隊列

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

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

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

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

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

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

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

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

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

最新評論

靖安县| 恩平市| 绥宁县| 安丘市| 特克斯县| 宜丰县| 东平县| 海宁市| 个旧市| 体育| 抚顺市| 平山县| 汉源县| 南宁市| 丰都县| 梁河县| 牟定县| 望谟县| 霞浦县| 镇坪县| 安阳市| 清水河县| 洛隆县| 赤城县| 安溪县| 巴南区| 镇赉县| 蓝田县| 古田县| 揭西县| 哈尔滨市| 东乌珠穆沁旗| 凤山县| 平安县| 青阳县| 张北县| 疏勒县| 融水| 浙江省| 界首市| 衡南县|