如何在 tomcat 服务器上部署 Spring boot Web 应用程序

2022-09-01 14:09:48

我已经创建了弹簧引导Web应用程序,但是我无法在tomcat上部署弹簧启动Web应用程序WAR文件,并且我能够将其作为java应用程序运行。如何在tomcat上运行spring boot应用程序作为Web服务。我正在使用以下代码。如果可以在tomcat上运行,请帮助我使用注释而不使用web.xml并使用web.xml。

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

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

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

}

其余控制器的以下代码

@RestController
public class HelloWorld{

   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public ResponseEntity<String> get() {
       return new ResponseEntity<String>("Hello World", HttpStatus.OK);
   }
}

关注Pom.xml我正在使用

<groupId>org.springframework</groupId>
<artifactId>web-service</artifactId>
<version>0.1.0</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>

        <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>
        <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
    </dependency>

</dependencies>

<properties>
    <java.version>1.6</java.version>
</properties>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-releases</id>
        <url>https://repo.spring.io/libs-release</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-releases</id>
        <url>https://repo.spring.io/libs-release</url>
    </pluginRepository>
</pluginRepositories>
<packaging>war</packaging>


答案 1

以下是有关如何将应用部署为文件的两个很好的文档。Spring Bootwar

您可以按照这个春季启动操作方法-传统部署文档 -

根据本文档的步骤 -

  1. 更新应用程序的主类以扩展 。SpringBootServletInitializer

  2. 下一步是更新生成配置,以便项目生成 war 文件而不是 jar 文件。<packaging>war</packaging>

  3. 将嵌入式 Servlet 容器依赖项标记为提供。

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

还有一种方式 ——

请参阅此春季 io 文档,其中概述了如何将 spring 引导应用部署到应用程序服务器。

步骤 -

  1. 将包装更改为 。jarwar

  2. 注释掉插件的声明spring-boot-maven-pluginpom.xml

  3. 通过扩展和重写方法将 Web 入口点添加到应用程序中SpringBootServletInitializerconfigure

  4. 删除并将依赖项修改为spring-boot-starter-tomcat dependencyspring-boot-starter-web

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

在 、中删除和依赖项中。依赖关系将包括这些依赖项。pom.xmlspring-beansspring-webmvcspring-boot-starter-web


答案 2

Spring boot提供了将应用程序作为传统war文件部署在(没有Web.xml)支持tomcat服务器的选项。请参阅春季启动文档。我将在这里简要介绍您需要做什么。servlet 3.x

步骤1:修改以将包装更改为war:(您已经这样做了)pom.xml

<packaging>war</packaging>

第2步:更改您的依赖关系

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

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

步骤3:在标签下修改您的战争名称(如果您需要避免附加与战争名称一起的版本详细信息)。pom.xml<build>

<build>
    <finalName>web-service</finalName>
.....

步骤4:运行maven构建以创建战争:步骤5:在tomcat中部署生成的war文件并在浏览器中请求URLclean installweb-service.warhttp://<tomcat ip>:<tomcat port>/web-service/hello

你应该得到.Hello World

注意:您也可以像Dehghani@Ali所说删除多余的依赖项。


推荐