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/C++程序语言概念
    详解QT5.10.0搭载OpenCV3.4.0环境配置步骤说明
    微信小程序支付结果 c#后台回调
    信小程序支付(C#后台+前台)
    微信小程序知识集锦
    WPF获取读取电脑指定文件夹中的指定文件的地址
    WPF后台动画DoubleAnimation讲解
    wpf datagrid 的单元格内容超出列宽度
    WPF实现3D翻转的动画效果
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12675008.html
Copyright © 2011-2022 走看看