当前位置: 首页 > 知识库问答 >
问题:

Spring Boot - 可执行战争也可以部署到应用程序服务器

颛孙玉石
2023-03-14

假设我有一个Spring引导Web应用程序 - 它可以通过gradle(嵌入式tomcat)运行。但是我也需要它能够以标准方式将战争部署到应用程序服务器中。应如何配置应用?标准 web.xml以及 xml 配置?

目前我有这样的东西:

@SpringBootApplication

公共类MyApplication扩展了SpringBootServletLaunalizer{

public static void main(String[] args) {
    System.setProperty("spring.profiles.active", "dev");
    SpringApplication.run(MyApplication.class, args);
}

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

@Configuration
@ConditionalOnWebApplication
public static class WebConfiguration {

    @Bean
    public ServletListenerRegistrationBean<ServletContextListener> registerClientCookieConfigListener () {
        ServletListenerRegistrationBean<ServletContextListener> srb =
                new ServletListenerRegistrationBean<>();
        srb.setListener(new MyConfigListener());
        return srb;
    }

    @Bean
    public ServletListenerRegistrationBean<HttpSessionListener> registerMySessionConfigListener () {
        ServletListenerRegistrationBean<HttpSessionListener> srb =
                new ServletListenerRegistrationBean<>();
        srb.setListener(new MySessionConfigListener());
        return srb;
    }


    @Bean
    public FilterRegistrationBean registerLoginFilter() {
        FilterRegistrationBean filter = new FilterRegistrationBean(new MyFilter());
        filter.setUrlPatterns(Collections.singletonList("/*"));
        return filter;
    }

    @Bean
    public ServletRegistrationBean registerSAMLDispatcherServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean(
                new DispatcherServlet(), "/test/*");
        bean.setLoadOnStartup(1);
        return bean;
    }
}

}

这是1:1映射到web.xml。是否有可能在没有Web.xml的情况下将其部署到应用程序服务器?

共有1个答案

沈飞翼
2023-03-14

你不需要网络。xml将spring boot部署到独立的tomcat服务器或任何其他web服务器。

Spring Boot不依赖于xml配置,它会自动配置一个等效于调度器servlet。

要将spring boot应用程序部署到另一台服务器,您需要在maven中将包更新为war

 <packaging>war</packaging>

并告诉maven Web服务器将在运行时中可用,并且不要将其与提供的范围打包

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

文档很少

https://www.baeldung.com/spring-boot-war-tomcat-deploy

https://www.mkyong.com/spring-boot/spring-boot-deploy-war-file-to-tomcat/

 类似资料:
  • 我想部署一个war文件,我们称之为应用程序。战争,在嵌入的码头上。 所以最简单的代码是: 路径最终类似于“/dist/app.war”。当从Eclipse运行时,它就像一个符咒,但是当我想从我的项目的一个可运行的jar中做同样的事情时,情况会变得更糟。 即使jar架构很好: META-INF 找不到该文件。我知道标准路径在运行jar文件时不一致,但尝试使用"jar: file:.../projec

  • 我们已经部署了JBoss 6.1应用服务器,它承载了一个在Spring中编写的java应用程序。现在我们正在使用HTML PHP创建另一个应用程序。是否可以在现有的JBossAS部署上部署PHP应用程序?我在网上读到,要部署php应用程序,我需要Jboss native,JbossAS不起作用。

  • 问题内容: 我有一个构建过程,之后将我的战争上传到我们本地的Maven存储库。 当我们部署到TEST和PROD时,我想使用maven cargo插件并指定要部署到这些环境的版本。如何配置pom(或者可能是一个名为pom-deploy.xml的新pom)以从存储库中拉出特定的战争并进行远程部署? 谢谢 问题答案: 要在新项目中获取WAR文件,只需为其声明一个依赖项。

  • 我遇到了一个与Gradle 4.8.1建立战争的问题。这是构建。格拉德尔: 我还尝试删除“maven”插件、archivesBaseName和uploadArchive任务,同时取消对war任务的注释,得到了相同的结果。使用uploadArchive时,war可以很好地部署到nexus服务器,我没有发现任何错误。在将war部署到tomcat(在这两种情况下)时,tomcat 7和8不会抛出错误,我

  • 我跟随以下帖子,但这些都没有帮助我。邮政一、邮政二、邮政03、邮政04 我花了两天时间寻找答案,请帮帮我。

  • 我有一个启动应用程序,部署到一个外部tomcat服务器,一切工作在我的本地与本地数据库。现在,我必须将代码推广到数据库配置不同的更高环境。我读了很多关于配置文件的etc...,但是当它是一个外部tomcat并且不使用