SpringBoot項目打成可運行的war包


創建可部署的 War 文件

由於 Spring WebFlux 並不嚴格依賴於 Servlet API,並且默認情況下會在嵌入式 Reactor Netty 服務器上部署 applications,因此 WebFlux applications 不支持 War 部署。

生成可部署的 war 文件的第一個 step 是提供SpringBootServletInitializer子類並覆蓋其configure方法。這樣做可以使用 Spring Framework 的 Servlet 3.0 支持,並允許您在 servlet 容器啟動時配置 application。通常,您應該更新 application 的 main class 以擴展SpringBootServletInitializer,如下面的示例所示:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

下一個步驟是更新 build configuration,以便您的項目生成 war 文件而不是 jar 文件。如果您使用 Maven 和spring-boot-starter-parent(為您配置 Maven 的 war 插件),您需要做的就是修改pom.xml以將包裝更改為 war,如下所示:

<packaging>war</packaging>

如果使用 Gradle,則需要修改build.gradle以將 war 插件應用於項目,如下所示:

apply plugin: 'war'

process 中的最后一個步驟是確保嵌入的 servlet 容器不會干擾部署 war 文件的 servlet 容器。為此,您需要將嵌入的 servlet 容器依賴項標記為已提供。

如果使用 Maven,則以下 example 將 servlet 容器(在本例中為 Tomcat)標記為提供:

<dependencies>
    <!---->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!---->
</dependencies>

如果使用Spring Boot build 工具,則標記嵌入的 servlet 容器依賴項將提供一個可執行的 war 文件,其中提供的依賴項打包在lib-provided目錄中。這意味着,除了可部署到 servlet 容器之外,您還可以在命令 line 上使用java -jar運行 application。

將 WAR 部署到 WebLogic

要將 Spring Boot application 部署到 WebLogic,必須確保 servlet 初始化程序直接實現WebApplicationInitializer(即使您從已經實現它的 base class 擴展)。

WebLogic 的典型初始化程序應類似於以下 example:

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.WebApplicationInitializer;

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer implements WebApplicationInitializer {

}

如果使用 Logback,還需要告訴 WebLogic 更喜歡打包的 version 而不是服務器的 version。您可以通過添加包含以下內容的WEB-INF/weblogic.xml文件來執行此操作:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
        http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM