java學習

          java學習

           

          soringboot項目大war包,部署到Tomcat步驟

          springboot的應用打包默認是打成jar包,并且如果是web應用的話,默認使用內置的tomcat充當servlet容器,但畢竟內置的tomcat有時候并不滿足我們的需求,如有時候我們想集群或者其他一些特性優化配置,因此我們需要把springboot的jar應用打包成war包,并能夠在外部tomcat中運行。
              很多人會疑問,你直接打成war包并部署到tomcat的webapp下不就行了么?No,springboot的如果在類路徑下有tomcat相關類文件,就會以內置tomcat啟動的方式,經過你把war包扔到外置的tomcat的webapp文件下啟動springBoot應用也無事于補。
              要把springboot應用轉至外部tomcat的操作主要有以下三點:
          1、把pom.xml文件中打包結果由jar改成war,如下:
          [html] view plain copy
          1. <modelVersion>4.0.0</modelVersion>  
          2. <groupId>spring-boot-panminlan-mybatis-test</groupId>  
          3. <artifactId>mybatis-test</artifactId>  
          4. <packaging>war</packaging>  
          5. <version>0.0.1-SNAPSHOT</version>  

          2、添加maven的war打包插件如下:并且給war包起一個名字,tomcat部署后的訪問路徑會需要,如:http:localhost:8080/myweb/****

            
          [java] view plain copy
          1. <plugin>       
          2.    <groupId>org.apache.maven.plugins</groupId>       
          3.    <artifactId>maven-war-plugin</artifactId>       
          4.    <configuration>       
          5.     <warSourceExcludes>src/main/resources/**</warSourceExcludes>  
          6.     <warName>myweb</warName>       
          7.    </configuration>       
          8.   </plugin>       

          3、排除org.springframework.boot依賴中的tomcat內置容器,這是很重要的一步

          [java] view plain copy
          1. <dependency>  
          2.         <groupId>org.springframework.boot</groupId>  
          3.         <artifactId>spring-boot-starter-web</artifactId>  
          4.         <exclusions>  
          5.             <exclusion>  
          6.                 <groupId>org.springframework.boot</groupId>  
          7.                 <artifactId>spring-boot-starter-tomcat</artifactId>  
          8.             </exclusion>  
          9.         </exclusions>  
          10.     </dependency>  

          4、添加對servlet API的依賴
          [java] view plain copy
          1. <dependency>  
          2.             <groupId>javax.servlet</groupId>  
          3.             <artifactId>javax.servlet-api</artifactId>  
          4.         </dependency>  

          5、繼承SpringBootServletInitializer ,并覆蓋它的 configure 方法,如下圖代碼,為什么需要提供這樣一個SpringBootServletInitializer子類并覆蓋它的config方法呢,我們看下該類原代碼的注釋:
          /**Note that a WebApplicationInitializer is only needed if you are building a war file and
           * deploying it. If you prefer to run an embedded container then you won't need this at
           * all.
          如果我們構建的是wai包并部署到外部tomcat則需要使用它,如果使用內置servlet容器則不需要,外置tomcat環境的配置需要這個類的configure方法來指定初始化資源。
          [java] view plain co@SpringBootApplication
          //@ServletComponentScan
          public class JobManagementApplication extends SpringBootServletInitializer{

               @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
                      return application.sources(JobManagementApplication.class);
                  }
              public static void main(String[] args) {
                  SpringApplication.run(JobManagementApplication.class, args);
              }
          }
          經過以上配置,我們把構建好的war包拷到tomcat的webapp下,啟動tomcat就可以訪問啦

          posted on 2018-03-17 18:39 楊軍威 閱讀(662) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 富裕县| 崇阳县| 余干县| 临清市| 北宁市| 普兰县| 德清县| 益阳市| 永平县| 衡南县| 桐梓县| 邢台县| 巨鹿县| 刚察县| 若羌县| 青河县| 吉隆县| 兴仁县| 卫辉市| 白城市| 五台县| 泽普县| 岳阳市| 柏乡县| 阳东县| 永春县| 潞西市| 包头市| 边坝县| 青浦区| 浠水县| 平乡县| 湖州市| 始兴县| 安宁市| 平凉市| 乐东| 深水埗区| 苏尼特左旗| 清苑县| 镇宁|