Java 打包嵌入式tomcat服务器

Java 打包嵌入式tomcat服务器,java,tomcat,embedded-tomcat-8,Java,Tomcat,Embedded Tomcat 8,有史以来第一次使用tomcat/从头开始设置Web应用程序,所以请保持mercyful。我创建了一个嵌入式tomcat服务器,基本上如下所示: public class Server implements Runnable { private Tomcat tomcat; public Server() { tomcat = new Tomcat(); tomcat.setPort(8080); tomcat.addWebapp("", new File("src/w

有史以来第一次使用tomcat/从头开始设置Web应用程序,所以请保持mercyful。我创建了一个嵌入式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);
    }
}
我在一个主管道中运行它,看起来像这样:

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服务器,而类Foo每隔几个小时在后端执行一次操作。可能不是创建webapp的正确方法,但这是我管理过的最好的方法

然而,现在我正试图打包它,我遇到了一些问题,因为一旦打包(使用Maven)后,
服务器似乎无法找到webapp文件夹。在谷歌上搜索了几个小时,尝试了很多关于战争和jar:s的东西后,我得出了一个结论,关于这个嵌入tomcat的东西,我不太理解

因此,我的问题是:

  • 我实现webapp的方式正确吗?我感觉不是,但我不能确认
  • 2a。如果不正确,如何正确操作


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

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

    这里有一个示例初学者示例,它应该可以让您继续学习-


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

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

    这里有一个示例初学者示例,它应该可以让您继续学习-


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

    很抱歉延迟了响应。谢谢你的帮助,伙计!Spring boot工作得很好,使用和打包都非常简单。很抱歉延迟了响应。谢谢你的帮助,伙计!SpringBoot工作得很好,使用和打包都非常简单。