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

SpringBootServletializer在战争部署中的重要性

楚彦
2023-03-14

我阅读了一些教程,了解到ApplicationContext负责管理spring应用程序中创建的所有bean。在将WAR部署到servlet容器时,必须扩展SpringBootServletInitializer,从文档中可以看出,一个固执己见的WebApplicationInitializer可以从传统的WAR部署中运行SpringApplication。将Servlet、Filter和ServletContextInitializer bean从应用程序上下文绑定到服务器。

有人能帮我理解上面这句话的意思吗?ServletContext初始值设定项与SpringBootServletInitializer的关系如何?为什么servlet容器不能自己创建ServletContext?如果是这种情况,我们如何在使用SpringBootServletInitializer后获得Tomcat以编程方式创建的SpringApplication的ServletContext引用?

共有1个答案

皇甫喜
2023-03-14

运行嵌入式应用服务器时,web应用程序使用静态主入口点。主要入口点通常如下所示:

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

或者这个:

public static void main(final String[] args) {
    SpringApplication   springApplication   = new SpringApplicationBuilder(Application.class)
        .properties("spring.main.banner-mode=log")
        .build();

    springApplication.run(args);
}

两者都使用Spring应用程序。方法来扫描、配置和运行web应用程序。

静态主体对应用程序服务器没有任何意义。取而代之的是,我们添加了一个SpringBootServlet初始实现,该实现反过来实现了WebApplication ation初始实现器接口。

要在Servlet 3.0环境中实现的接口,以便以编程方式配置ServletContext,而不是(或可能与)传统的基于web.xml的方法。

SpringServletContainerInitializer将自动检测此SPI的实现,它本身由任何Servlet3.0容器自动引导。有关这种引导机制的详细信息,请参阅其Javadoc。

SpringServletContainerInitializer由Servlet 3.0容器引导并执行WebApplicationInitializer。onStartup(ServletContext)方法来配置ServletContext。

  1. 我们实现了SpringServletContainer初始器来定义要运行的SpringApplication。
  2. 应用程序服务器可以自己创建ServletContext,只是不能自己配置ServletContext。
  3. 为什么要访问ServletContext?Spring将为您处理配置。
 类似资料:
  • 在尝试将相同的战争文件重新部署到野蝇中时,我总是遇到错误。有谁知道下面的错误是什么意思以及如何解决它? 错误如下:无法上载部署:{“WFLYCTL0080:失败的服务” =

  • 我正在寻找一种方法,可以在我选择的时候将战争工件部署到IntelliJ启动的Tomcat中。我有一个项目,它的配置启动了Tomcat8服务器并部署了一些工件。LaterI现在希望将更多来自不同项目的工件部署到同一个IntelliJ启动的Tomcat中。 步骤:启动包含Tomcat的项目 步骤:从另一个IntelliJ-project(从IDE内)部署war 步骤:从IntelliJ部署另一个war

  • 我对tomcat很熟悉。我们使用服务器在eclipse中创建一个项目。xml和一些。配置文件。我们生成。战争档案。我们将这个war文件复制到我们的生产服务器webapps文件夹中,然后在webapps文件夹中生成一个同名的新文件夹。我们在那里更改生产服务器配置(在文件夹中)。 我们的一个客户想在他的JBoss服务器上部署war。我们试图通过将war复制到/standalone/deployment

  • 我正在自学RESTEasy,它将与Maven一起构建,并部署在jBoss中,然后再与Jenkins集成。 目前,我已经创建了一个非常简单的RESTEasy网络服务,并用maven构建了它。我有一个文件和爆炸的战争(这是我相信的战争的解压文件夹),一个与和文件夹在我的netbean里面项目目标文件夹。 我已经安装了JBoss7。x、 并成功启动并验证了它在我的

  • 我想在Glassfish中使用Jenkins的这些批处理命令部署一个WAR。:

  • 在Ubuntu 16.04上,我使用以下命令停止tomcat7服务器: 然后我创建了一个war文件,如下所示: 我将war文件复制到webapps目录: 我使用命令:sudo service tomcat7 start调出tomcat 这样,下面的url显示服务器正在工作: 据我所知,下面的URL应该转到. war文件localhost:8080/test 它不起作用。(404错误)我做错了什么?