zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12675008.html
Copyright © 2011-2022 走看看