【问题标题】:Best way to execute embedded Jetty执行嵌入式 Jetty 的最佳方式
【发布时间】:2014-10-01 05:49:17
【问题描述】:

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

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

是否需要告知 Jetty 服务器,war 文件在哪里(war 文件恰好位于它所在的位置),或者 Jetty 默认会查找并检查 WEB-INF 以了解 Jetty 处理的各种 XML 文件吗?

我使用Jetty Maven Plugin 看到了与此类似的东西,但一致认为该插件不适用于生产。

【问题讨论】:

    标签: java embedded-jetty


    【解决方案1】:

    我能够使用名为 Jetty Console Maven Plugin 的 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-plugin 一起使用。除此之外,该插件运行良好,我恳请 Jetty Console Maven Plugin 的作者将他关于如何使用它的博客文章备份或为其创建新文档。

    【讨论】:

    • 谢谢何塞!你链接到我的帖子,现在我用这个帖子来解决 1.55 的问题。非常感谢。
    【解决方案2】:

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

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

    【讨论】:

    • 从 Jetty 自己查看 this link。在这个例子中,他们使用战争作为实现注解的方式。所以看起来他们在实现 servlet 的标准功能时会继续回到 WAR 文件。
    • 是的 - 有一个可运行的战争文件是有意义的。这样您就可以同时使用这两个目的。 (无论如何,码头通常都需要战争文件中的大部分内容。我想这取决于主要方法的设置方式以及它是什么类型的应用程序。)
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2018-07-24
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    相关资源
    最近更新 更多