我有一些用jetty构建的项目。我从像
这样的代码创建服务器 Server server = new Server(8082);
server.setHandler(new DefaultRequestHandler());
server.start();
server.join();
在开发应用程序时非常有用,但是将此类应用程序部署到服务器的正确方法是什么? 我可以从中构建一个jar并以
运行它 java -jar server.jar
是否可以,或者我应该安装jetty并将我的应用部署为战争? 我在运行简单jar时遇到的问题是我将它部署为远程机器,如果我将其作为类型运行,它将在控制台的主线程中运行,因此我无法在该控制台窗口中执行任何操作。如果我关闭控制台窗口,它将终止进程。我可以把它作为
开始 java -jar server.jar &
它会转到后台,但我无法停止服务器。只有使用kill命令。 另外我发现有一些start.jar可以启动jetty,但我没有找到描述性的例子何时以及如何使用它。
我遇到的第二个问题是日志。它将所有日志打印到控制台或/ dev / null。有办法以某种方式处理日志文件吗?我的意思是有可能存储日志3天,例如,并没有在一个文件中写入日志,直到空间结束或我将手动删除日志文件。这是处理服务器,还是某些日志库,如log4j或其他什么?
我使用centos7作为服务器。
答案 0 :(得分:0)
这是完全可以的。使用嵌入式应用程序服务器容器是一种非常常见的做法,尤其是当我们更多地转向微服务时。一切都由构建管理,易于构建/部署和维护。
对于Windows,您的运行时作为服务的问题已得到解答here。对于* nix,您可以按照此命令
java -jar abc.jar&
关于处理日志,
最好在应用程序本身处理日志。 Log4j将是一个配置日志级别,轮换计划的好框架。
如果您将库打印输出到控制台,则可以将其重定向到日志文件。然后你需要配置几乎所有* nix风格的logrotate。
答案 1 :(得分:-1)
有一个名为jetty-runner.jar的现成嵌入式Jetty服务器jar。这可能是一个非常好的解决方案。此刻我发现这个包只有一个减号。如果您需要支持Web套接字,则必须使用其他jar重新包装它。