【问题标题】:Embedded Jetty server嵌入式码头服务器
【发布时间】:2014-12-21 19:36:06
【问题描述】:

我有一些使用码头构建的项目。我从代码创建服务器

    Server server = new Server(8082);
    server.setHandler(new DefaultRequestHandler());
    server.start();
    server.join();

在开发应用程序时非常有用,但是将此类应用程序部署到服务器的正确方法是什么? 我可以从中构建一个 jar 并将其作为

运行
    java -jar server.jar

可以吗,还是我应该安装码头并将我的应用部署为战争? 我在运行简单 jar 时遇到的问题是我将它部署为远程机器,如果我将它作为类型运行,它将在控制台的主线程中运行,所以我无法在该控制台窗口中执行任何操作。如果我关闭控制台窗口,它将终止该进程。我可以开始它

    java -jar server.jar &

它会进入后台,但我没有办法停止服务器。只能用 kill 命令。 我还发现有一些 start.jar 可以启动码头,但我没有找到描述性示例何时以及如何使用它。

我遇到的第二个问题是日志。它将所有日志打印到控制台或 /dev/null。有没有办法以某种方式处理日志文件?例如,我的意思是有可能将日志存储 3 天,直到空间结束或我将手动删除日志文件时才将日志写入一个文件。这是否处理服务器,或一些日志库,如 log4j 或其他?

我使用centos7作为服务器。

【问题讨论】:

    标签: java server embedded-jetty


    【解决方案1】:

    这完全没问题。使用嵌入式应用服务器容器是一种非常普遍的做法,尤其是当我们更多地转向微服务时。一切都由构建管理,易于构建/部署和维护。

    here for windows 已回答您将运行时作为服务维护的问题。对于*nix,你可以按照这个命令

    java -jar abc.jar &

    关于处理日志,

    最好在应用程序本身处理日志。 Log4j 将是一个很好的框架来配置日志级别、轮换计划。

    如果您有库将输出打印到控制台,则可以将其重定向到日志文件。然后你需要配置logrotate,它几乎适用于所有*nix 风格。

    【讨论】:

    【解决方案2】:

    有一个现成的嵌入式码头服务器 jar,名为 jetty-runner.jar。这可能是一个非常好的解决方案。此刻我发现这个包只有一个减号。如果您需要对 Web 套接字的支持,您必须使用额外的 jar 重新打包它。

    【讨论】:

    • jetty-runner.jar 不是 嵌入式码头服务器。执行最简单和最简单的 NON-PRODUCTION 环境是测试和 QA 唯一的便利,以使人们对 Jetty 感到满意并最终进入分发(使用通过 XML 进行正确的 Jetty Embedded 设置)或您自己设计的真正的 Jetty Embedded。
    • 所以如果它不是生产就绪的解决方案,那么为什么 Heroku 推荐它作为 Java 应用程序的服务器之一?
    • 互联网上有很多不良信息。 Heroku 在这方面并不孤单。 JBoss/Weld 也提出了一些可怕的建议(导致巨大的安全漏洞)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多