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

SpringBoot应用程序Tomcat部署

蒋弘致
2023-03-14
public class SkyVetApplication extends SpringBootServletInitializer{
...
   @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(SkyVetApplication.class);
}
...
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
**providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'**

完成干净的构建后,我将war文件复制到Tomcat的webapps文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么?

非常感谢您的帮助。

共有1个答案

孟选
2023-03-14

您应该添加一个main方法。

查看以下示例:https://github.com/pytry/bootiful-war-deployment

下面是“Hello”模块的一个示例(它使用Lombok注释处理器)。

package com.example.bootifulwar;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

@SpringBootApplication
@EnableScheduling
@Slf4j
public class HelloServletInitializer extends SpringBootServletInitializer{

    @Value("${messageForUser}")
    private String message;

    @Value("${whatDoesTheFoxSay:'No body knows.'}")
    private String whatDoesTheFoxSay;

    public static void main(String[] args){

        SpringApplication.run(HelloServletInitializer.class, args);
    }

    @Scheduled(fixedRate = 2000)
    public void sayHelloTo(){

        log.info("Hello! " + message);
    }

    @Override
    public SpringApplicationBuilder configure(SpringApplicationBuilder application){

        log.info(
            "\n*********************\n" +
                "What does the fox say?\n" +
                whatDoesTheFoxSay +
                "\n*********************\n");
        return application.sources(HelloServletInitializer.class);
    }
}
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="hello.war" path="hello">
  <Resources className="org.apache.catalina.webresources.StandardRoot">
    <PreResources base="hello\\config"
                  className="org.apache.catalina.webresources.DirResourceSet"
                  internalPath="/"
                  webAppMount="/WEB-INF/classes"/>
  </Resources>
</Context>
 类似资料:
  • 我在将spring boot应用程序部署到tomcat时遇到了问题,尽管在IDE中工作得很好。我按照https://docs.spring.io/spring-boot/docs/current/reference/html/howto-tegratic-deployment.html中的说明进行了操作 更详细的结构: mvn clear包给出错误:

  • 基本上,我想使用spring boot auto配置数据源相关功能,并希望将spring boot应用打包到一个war,并部署到Tomcat。 github URL:https://github.com/oneslideicywater/customlizeofkakahair运行MVN构建后,我跳过测试,将部署到TomCat,重新启动它,然后在STS IDE中运行应用程序时,一切都很好。但是会发

  • 我正试图将运行在tomcat上的现有应用程序更改为SpringBoot。它一直运行到真正的SpringBoot启动。我有一个类似的应用程序运行在SpringBoot上。这就是我知道它一直运行到Springboot的原因。 我的主要方法: 我尝试使用@componentscan运行main方法,该方法具有如下所示的basePackages: 这无济于事。我尝试在main类的顶部添加@SpringBo

  • 尝试在Heroku云中部署Spring Boot应用程序,但编译java应用程序时出现错误,但在我的本地计算机中运行良好。

  • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。