欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

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

方案

tomcat啟動一般需要幾個基本參數(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ù)設置及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包方便調(diào)用,但是打包插件會把依賴jar包中的class文件進行合并

嵌入式tomcat依賴的jar包有相同包名的,導致class文件覆蓋,websocket相關內(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:應用名稱
  • 參數(shù)2:war包絕對路徑
  • 參數(shù)3:端口號
  • 參數(shù)4:映射路由(contextPath)
  • 參數(shù)5:jvm啟動參數(shù),主要指定內(nèi)存大小
  • 參數(shù)6:啟動掃描跳過jar包名稱,多個使用,分開

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

相關文章

  • kafka topic 權(quán)限控制(設置刪除權(quán)限)

    kafka topic 權(quán)限控制(設置刪除權(quán)限)

    大家都知道Kafka是一個消息隊列,把消息放到隊列里邊的叫生產(chǎn)者,從隊列里邊消費的叫消費者。今天通過本文給大家介紹kafka topic 權(quán)限控制的相關知識,感興趣的朋友一起看看吧
    2021-11-11
  • Java Set接口及常用實現(xiàn)類總結(jié)

    Java Set接口及常用實現(xiàn)類總結(jié)

    Collection的另一個子接口就是Set,他并沒有我們List常用,并且自身也沒有一些額外的方法,全是繼承自Collection中的,因此我們還是簡單總結(jié)一下,包括他的常用實現(xiàn)類HashSet、LinkedHashSet、TreeSet的總結(jié)
    2023-01-01
  • springMVC盜鏈接詳解

    springMVC盜鏈接詳解

    這篇文章主要為大家詳細介紹了SpringMVC盜鏈接詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • 關于Unsupported Media Type的解決方案

    關于Unsupported Media Type的解決方案

    在Web開發(fā)中,415錯誤表示服務器無法處理請求附帶的媒體格式,本文介紹了導致HTTP 415錯誤的原因以及解決該問題的兩種方法,首先,415錯誤通常是由于客戶端請求的內(nèi)容類型與服務器期望的不匹配引起的,例如,服務器可能期望JSON格式的數(shù)據(jù)
    2024-10-10
  • idea項目實現(xiàn)移除和添加git

    idea項目實現(xiàn)移除和添加git

    本文指導讀者如何從官網(wǎng)下載并安裝Git,以及在IDEA中配置Git的詳細步驟,首先,用戶需訪問Git官方網(wǎng)站下載適合自己操作系統(tǒng)的Git版本并完成安裝,接著,在IDEA中通過設置找到git.exe文件以配置Gi
    2024-10-10
  • 一篇文章帶你深入了解Java基礎

    一篇文章帶你深入了解Java基礎

    這篇文章主要給大家介紹了關于Java中方法使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • MyBatis-Plus中更新操作的兩種實現(xiàn)

    MyBatis-Plus中更新操作的兩種實現(xiàn)

    本文主要介紹了MyBatis-Plus中更新操作的兩種實現(xiàn),主要是通過id更新和條件更新,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • No ‘Access-Control-Allow-Origin‘ header is present跨域及解決

    No ‘Access-Control-Allow-Origin‘ header is&nb

    這篇文章主要介紹了No ‘Access-Control-Allow-Origin‘ header is present跨域及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • mybatis判斷int是否為空的時候,需要注意的3點

    mybatis判斷int是否為空的時候,需要注意的3點

    這篇文章主要介紹了mybatis判斷int是否為空的時候,需要注意的3點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 簡單易懂的MyBatis分庫分表方案分享

    簡單易懂的MyBatis分庫分表方案分享

    這篇文章主要給大家介紹了關于MyBatis分庫分表方案的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用MyBatis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03

最新評論