打包嵌入式 tomcat 服务器
Packaging embedded tomcat server
第一次使用 tomcat/setting 从头开始构建网络应用程序,所以请大发慈悲。我创建了一个嵌入式 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 服务器,而 class Foo 每隔几小时在后端做一些事情。可能不是创建网络应用程序的正确方法,但这是我管理过的最好的方法。
但是,现在我正在尝试打包它,我 运行 遇到了问题,因为一旦打包(使用 Maven),Server
似乎无法找到 webapp 文件夹。经过几个小时的谷歌搜索并尝试了很多涉及 war:s 和 jar:s 的东西后,我得出的结论是,这个嵌入的 tomcat 东西有些东西我不是理解。
那么,我的问题是:
- 我实现 webapp 的方式是否正确?我感觉不是,但我无法真正确认。
2a。如果不正确,如何正确操作?
2b。如果正确,如何将其打包成 运行nable jar/war?
这是一种非标准的处理方式。与其编写您自己的所有应用程序逻辑来处理集成的 Web 服务器,不如考虑利用已经存在的东西?您可以在 Spring 引导中创建一个 Java 项目,它包含自己的嵌入式 Web 服务器。
这里有一个入门示例,应该可以帮助您 - https://spring.io/guides/gs/serving-web-content/
我会推荐这种方法而不是自己编写它,因为 SpringBoot 是一个被广泛使用、证明和测试的行业标准。
第一次使用 tomcat/setting 从头开始构建网络应用程序,所以请大发慈悲。我创建了一个嵌入式 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 服务器,而 class Foo 每隔几小时在后端做一些事情。可能不是创建网络应用程序的正确方法,但这是我管理过的最好的方法。
但是,现在我正在尝试打包它,我 运行 遇到了问题,因为一旦打包(使用 Maven),Server
似乎无法找到 webapp 文件夹。经过几个小时的谷歌搜索并尝试了很多涉及 war:s 和 jar:s 的东西后,我得出的结论是,这个嵌入的 tomcat 东西有些东西我不是理解。
那么,我的问题是:
- 我实现 webapp 的方式是否正确?我感觉不是,但我无法真正确认。
2a。如果不正确,如何正确操作?
2b。如果正确,如何将其打包成 运行nable jar/war?
这是一种非标准的处理方式。与其编写您自己的所有应用程序逻辑来处理集成的 Web 服务器,不如考虑利用已经存在的东西?您可以在 Spring 引导中创建一个 Java 项目,它包含自己的嵌入式 Web 服务器。
这里有一个入门示例,应该可以帮助您 - https://spring.io/guides/gs/serving-web-content/
我会推荐这种方法而不是自己编写它,因为 SpringBoot 是一个被广泛使用、证明和测试的行业标准。