gpt4 book ai didi

java - 如何在外部 Tomcat 服务器中运行 WAR 文件的设置代码

转载 作者:行者123 更新时间:2023-12-01 18:13:15 25 4
gpt4 key购买 nike

我正在构建一个 Spring Boot 应用程序,在开始时,我需要检查一些系统文件并使用应用程序在其中找到的信息准备一些数据库池。通常,我会将其包含在 @SpringBootApplication 带注释的类的 main 方法中,但是,当我将应用程序作为 WAR 文件部署到外部 Tomcat 服务器时,该主类似乎并没有运行。我已经检查了该主类中应该有什么,我的主应用程序类现在如下所示:

package com.companyname.projectname;

import com.companyname.projectname.database.DatabasePoolManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {

private static final Logger logger = LoggerFactory.getLogger(WebApplication.class);

public static void main(String[] args) {
ApplicationContext applicationContext = SpringApplication.run(WebApplication.class, args);
DatabasePoolManager dpm = applicationContext.getBean(DatabasePoolManager.class);
dpm.setUpPools();
logger.error("\n\nIS ANYBODY OUT THERE?\n\n");
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
logger.error("\n\nIS ANYBODY OUT THERE? (But in the configure method)\n\n");
return builder.sources(WebApplication.class);
}

}

这与我原来的设置不同,因为 extends 和覆盖 configure

到目前为止,它在我的 Intellij IDE 上仍然运行良好,但是一旦移动并部署到 tomcat 服务器,就不会出现任何日志消息。该应用程序仍然可以工作,但显然缺少一些授予其功能(与数据库的连接)的设置。当我将此应用程序部署为 WAR 文件时,如何在应用程序启动时运行一些设置代码?

最佳答案

再次感谢上面评论中的 M. Deinum,为了在启动时运行一次,我使用了如下所示的新类:

package com.companyname.projectname;

import com.companyname.projectname.database.DatabasePoolManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class AppStartupRunner implements ApplicationRunner {

@Autowired
ApplicationContext applicationContext;

private static final Logger logger = LoggerFactory.getLogger(AppStartupRunner.class);

@Override
public void run(ApplicationArguments args) throws Exception {
DatabasePoolManager dpm = applicationContext.getBean(DatabasePoolManager.class);
dpm.setUpPools();
}
}

关于java - 如何在外部 Tomcat 服务器中运行 WAR 文件的设置代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60423143/

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