【问题标题】:Packaging embedded tomcat server封装嵌入式tomcat服务器
【发布时间】:2019-08-02 08:17:13
【问题描述】:

第一次使用 tomcat/从头开始设置 web 应用程序,所以请见谅。我创建了一个嵌入式 tomcat 服务器,它基本上看起来像这样:

public class Server implements Runnable {
private Tomcat tomcat;

public Server() {
    tomcat = new Tomcat();
    tomcat.setPort(8080);

    tomcat.addWebapp("", new File("src/webapp").getAbsolutePath());
}

@Override
public void run() {
    try {
        tomcat.start();
        tomcat.getServer().await();
    } catch (LifecycleException e) {
        e.printStackTrace();
    }
}

我在主程序中运行它,如下所示:

public static void main(String[] args) throws Exception {
    Thread thread = new Thread(server);
    thread.start();

    Foo foo = new Foo();

    (thread.isAlive()) {
        foo.doStuff();
        TimeUnit.HOURS.sleep(interval);
    }
}

该程序的目的是在一个线程上运行 http-server,而类 Foo 每隔几小时在后端做一些事情。可能不是创建 web 应用程序的正确方法,但它是我管理过的最好的方法。

但是,现在我正在尝试打包它,我遇到了问题,因为一旦打包(使用 Maven)Server 似乎无法找到 webapp 文件夹。经过几个小时的谷歌搜索并尝试了很多涉及 war:s 和 jar:s 的东西后,我得出的结论是,我不理解这个嵌入式 tomcat 的东西。

所以,我的问题是:

  1. 我实现 web 应用程序的方式是否正确?我感觉不是,但我无法真正确认。

2a。如果不正确,如何正确执行?

2b。如果正确,如何将其打包成可运行的 jar/war?

【问题讨论】:

    标签: java tomcat embedded-tomcat-8


    【解决方案1】:

    这有点不标准。与其编写所有自己的应用程序逻辑来处理集成的 Web 服务器,不如考虑利用已经存在的东西?您可以在 Spring Boot 中创建一个包含自己的嵌入式 Web 服务器的 Java 项目。

    这里有一个示例入门示例,应该可以帮助您入门 - https://spring.io/guides/gs/serving-web-content/

    我会推荐这种方法,而不是自己编写,因为 Spring Boot 是一种广泛使用、经过验证和测试的行业标准。

    【讨论】:

    • 抱歉延迟回复。谢谢老哥的帮助! Spring Boot 效果很好,而且使用和打包要容易得多。
    猜你喜欢
    • 2014-01-11
    • 2017-02-02
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2017-06-05
    • 2016-06-15
    相关资源
    最近更新 更多