执行嵌入式Jetty的最佳方式

时间:2014-08-07 20:40:46

标签: java embedded-jetty

我有一个结构化为标准战争的Web应用程序。我想使用嵌入式Jetty服务器作为我的servlet容器。由于这只是一个代码库,我认为执行Jetty服务器的main()也将与我的其余代码进行战争。

那么我如何执行我的main(),这是在战争中,启动Jetty服务器?我查看了示例,但示例没有这个设置,这对我来说似乎是一个正常的设置。

是否需要告知Jetty服务器war文件的位置(war文件恰好位于它所在的位置)或默认情况下Jetty会查找并检查WEB-INF以查找Jetty处理的各种XML文件? / p>

我使用Jetty Maven Plugin看到了与此相近的内容,但大家一致认为该插件不适用于制作。

2 个答案:

答案 0 :(得分:2)

我能够使用名为Jetty Console Maven插件的Maven插件轻松设置可执行文件。没有太多关于如何在Internet上使用它的文档。作者simplercity删除了他们的博客文章,了解如何使用它。但我确实在stackoverflow上找到了one post如何使用它。

此插件的当前版本是1.55。它可以找到here。我遇到的一个问题是,虽然这个插件所需的大多数工件都是1.55版本,其中一个是jetty-console-ajp-plugin,版本是1.53。这给我带来了一个问题,因为当我将所有其他插件设置为1.55时,我尝试执行战争时遇到了一个签名者异常错误。我在this stackoverflow answer找到了解决方案。修复是只使用所有插件的1.53版本。可能有一个更好的解决方案,允许您使用1.55与1.53 ajp插件。除此之外,该插件工作得非常好,我恳请Jetty Console Maven插件的作者带上他的博客文章,了解如何使用它备份或为其创建新文档。

答案 1 :(得分:1)

要用Java执行独立应用程序,它不需要是一场战争。一个罐子就好了。战争包含有关Web归档/应用程序应如何部署到J2EE容器中的信息。当你独立运行它时,这不是必需的。主要方法就足够了。你可以看一下maven shade plugin。它将帮助您构建一个可运行的jar。

(作为旁注 - 可运行的jar是一件相当简单的事情.jar文件的清单文件需要包含密钥MainClass,就是这样。)