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

sat*_*ish 25 java spring tomcat spring-mvc maven

我已经创建了spring boot web应用程序,但我无法在tomcat上部署spring boot 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

以下代码为休息控制器

@RestController
public class HelloWorld{

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

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

Omk*_*kar 32

以下是有关如何将Spring BootApp 部署为war文件的两个好文档.

你可以按照这个春季启动howto-traditional-deployment 文档 -

根据此文档的步骤 -

  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>
    
    Run Code Online (Sandbox Code Playgroud)

还有一种方式 -

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

脚步 -

  1. jar包装改为war.

  2. 注释掉spring-boot-maven-plugin你的插件声明pom.xml

  3. 通过扩展SpringBootServletInitializer和覆盖configure方法,将Web入口点添加到应用程序中

  4. 删除spring-boot-starter-tomcat dependency并修改您的spring-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>
Run Code Online (Sandbox Code Playgroud)

在你的pom.xml,删除spring-beansspring-webmvc依赖.该spring-boot-starter-web依存度将包括那些依赖条件.


Tom*_*ian 12

Spring引导提供了将应用程序部署为支持tomcat服务器的传统war文件servlet 3.x(不带web.xml)的选项.请参阅spring boot文档.我将简要介绍一下你需要做什么.

第1步:修改pom.xml以将包装更改为战争:(您已经做过)

<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)

第2步:改变你的依赖

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
   </dependency>
Run Code Online (Sandbox Code Playgroud)

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

<build>
    <finalName>web-service</finalName>
.....
Run Code Online (Sandbox Code Playgroud)

第4步:运行maven build来创建war:clean install 第5步:web-service.war在tomcat中部署生成的war文件,并在浏览器中请求urlhttp://<tomcat ip>:<tomcat port>/web-service/hello

你应该得到Hello World.

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


小智 0

将 Spring Boot jar 转换为 Spring Boot War 的过程记录在:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging Long简而言之,按照示例中的方式设置入门类,然后在 .pom 文件中将打包从 jar 切换为 war。此外,您需要将 spring-boot-starter-tomcat 依赖项设置为provided。再次,该过程以完整形式记录在上面的链接中。有关此主题的更多信息,请参阅 spring io 指南“将 Spring Boot JAR 应用程序转换为 WAR”,该指南位于https://spring.io/guides/gs/convert-jar-to-war/ 如果我如果您有任何进一步的帮助,请告诉我,我会帮助您。