gpt4 book ai didi

tomcat - Spring Boot应用Tomcat部署

转载 作者:行者123 更新时间:2023-11-28 21:50:17 25 4
gpt4 key购买 nike

我有一个 SpringBoot 应用程序,我正试图将其部署到 Tomcat 服务器。根据网上的引用资料,我在Application类中添加了一些代码如下:

public class SkyVetApplication extends SpringBootServletInitializer{
...
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SkyVetApplication.class);
}
...
}

build.gradle 中,我添加了以下内容:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
**providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'**

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

非常感谢您的帮助。

最佳答案

您应该添加一个 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);
}
}

要利用个性化日志记录和外部“application.properties”,假设您将多个 war 文件部署到同一个 Tomcat,您需要为“conf”中的每个应用程序上下文路径放置一个自定义 context.xml/卡塔利娜/本地主机。”。

例子:

<?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>

我不是 gradlem 方面的专家,但您的依赖项看起来不错。

希望对您有所帮助。

关于tomcat - Spring Boot应用Tomcat部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47688479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com