如何在Tomcat服务器上部署Sping Boot Web应用程序

qyuhtwio  于 2022-11-13  发布在  其他
关注(0)|答案(6)|浏览(209)

我已经创建了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);
    }

}

以下代码适用于休息控制器

@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>
wvt8vs2t

wvt8vs2t1#

这里有两个关于如何将Spring Boot应用程序部署为war文件的文档。
您可以按照此Spring Boot howto-traditional-deployment文档-
根据本文档的步骤-
1.更新应用程序的主类以扩展SpringBootServletInitializer
1.下一步是更新构建配置,以便项目生成war文件而不是jar文件。<packaging>war</packaging>
1.将嵌入的Servlet容器依赖关系标记为提供的依赖关系。

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

还有一个办法
请参阅这个spring io文档,它概述了如何将spring Boot 应用程序部署到应用服务器。
步骤-
1.将jar Package 更改为war
1.在pom.xml中注解掉spring-boot-maven-plugin插件的声明
1.通过扩展SpringBootServletInitializer并重写configure方法,将Web入口点添加到应用程序中
1.删除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>

在您的pom.xml中,移除spring-beansspring-webmvc相依性。spring-boot-starter-web相依性将会包含这些相依性。

41zrol4v

41zrol4v2#

Sping Boot 提供了一个选项,可以将应用程序部署为支持Tomcat服务器的servlet 3.x不带web.xml)中的传统war文件。请参见Spring boot文档。我将在这里简要介绍您需要做的事情。

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

<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:在<build>标记下的pom.xml中修改war名称(如果需要避免使用war名称附加的版本详细信息)。

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

步骤4:运行Maven Build以创建战争:clean install步骤5:在tomcat中部署生成的war文件web-service.war,在浏览器http://<tomcat ip>:<tomcat port>/web-service/hello中请求url

你应该得到Hello World

***注意:***您还可以删除多余的依赖项,正如@Ali Dehghani所说。

7lrncoxx

7lrncoxx3#

spring-boot-starter-tomcat相依性标记为provided,例如:

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

**注1:**从pom.xml中删除冗余依赖项,例如:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
</dependency>

它们是 * Spring Boot 启动程序包 * 的一部分

**注2:**使jar不警告

qmb5sa22

qmb5sa224#

将Sping Boot jar转换为Spring Boot war的过程记录在以下位置:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging长话短说,按照示例中的方式设置您的启动类,然后在.pom文件中将打包从jar切换到war。此外,您需要将spring-boot-starter-tomcat依赖项设置为provided。同样,在上面的链接中以完整的形式记录了该过程。有关该主题的更多信息,请参见spring io指南。“将Sping Boot JAR应用程序转换为WAR”,可在https://spring.io/guides/gs/convert-jar-to-war/上找到。如果我能提供任何进一步的帮助,请让我知道,我会帮助您。

o4hqfura

o4hqfura5#

我曾经面临过这个问题。上面的很多都是很好的建议。我的问题是最初部署在Pivotal TC服务器上。
1.使 Package 中的pom成为一场战争。

<packaging>war</packaging>

1.将依赖项添加到pom

<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>
    <scope>provided</scope>
</dependency>

1.我使用了一个Application类来保存main()。Main有配置代码,这样就可以注入EntityManager等。这个EntityManager使用了来自ApplicationContextpersistence.xml文件的信息来获取持久性信息。在SpringBoot下工作正常,但在Tomcat下就不行了。事实上,在Tomcat下Main()是不被调用的。Application类扩展了SpringBootServletInitializer
1.将以下方法添加到Application类中:

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    Application obj = new Application();
    @SuppressWarnings("resource")
    ConfigurableApplicationContext applicationContext = 
         new ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml");
     applicationContext.registerShutdownHook();
     applicationContext.getBeanFactory().autowireBeanProperties(
         obj, AutowireCapableBeanFactory.AUTOWIRE_NO, false);
    return application.sources(Application.class);
}

只有最后一行是必需的-其他代码以前保存在main()中,并被移动到这里以使EntityManager的注入工作。
1.所需的注解包括:

@EnableAutoConfiguration
@ComponentScan
//@SpringBootApplication will consist of both of these and @Configuration

1.某些url现在可能需要更改根上下文以包括

<artifactId>contextname</artifactId>.

希望能有所帮助

eagi6jfj

eagi6jfj6#

******在局域网的tomcat服务器上部署spring Boot webapp的步骤如下:-****它工作100%请尝试一下,因为它是我自己实现的。**strong text

1.在项目的www.example.com文件中添加server.port = 8080和server.address =(您的PC IP地址)application.properties。请记住:-不要将IP地址放在括号内,此处使用的括号只是为了显示括号内的IP地址。
1.然后制作Sping Boot 应用程序的war文件,您可以在eclipse中制作它,也可以在VS代码中制作它,无论您使用的是什么IDE。

如何在vs代码中生成war文件:-

在maven文件夹打开maven文件夹,你会发现你的项目,并点击文件夹,有一个名为清理的选项,点击清理,它将清理你的项目's文件夹命名为目标,然后再次单击同一项目,在clean下面,您将找到一个名为install的选项,单击它将在您的项目中的src文件夹下新建一个名为target的文件夹,并打开此目标文件夹你会发现有两个war文件一个是简单的,其他是扩展有原始,从这些文件你必须上传war文件以外的原始文件.
1.通过在浏览器中运行tomcat,将war文件上传到tomcat服务器的webapp文件夹中,然后转到tomcat中的管理器应用程序,在那里您可以找到上传war文件的选项。
1.在此之后,关闭您的公共防火墙网络从防火墙和保护在windows安全软件在您的系统从任务栏。
1.转到同一LAN上的另一台计算机,并通过http://IP_address:8080/yourwebsite_url访问应用程序URL
您的网站网址将是相同的,你上传的战争文件在tomcat服务器。

相关问题