【问题标题】:Using Jetty as a Java EE application server使用 Jetty 作为 Java EE 应用服务器
【发布时间】:2016-10-07 16:14:07
【问题描述】:

我目前在工作中遇到了一个问题,我一直在苦苦挣扎,希望这里的人能够提供一些帮助。我想指出这是我在这里的第一个问题,所以如果可以更好地格式化,我深表歉意,如果我应该添加任何内容,请随时告诉我。

在过去的几个月里,我们的应用程序在 TomEE 服务器上运行得非常愉快,但最近我们公司的一些高层告诉我们,我们必须使用 Jetty。不幸的是,除非我们能证明使用 Jetty 对我们来说实际上是不可能的,否则试图劝阻他们不会是一种选择。

我已经尝试设置一个 Jetty 服务器,但我一直专注于使用 maven-jetty 插件。过去我们在 tomee-maven 插件上取得了巨大成功,所以我希望这也同样有效。

很遗憾,我们没有采用这种方法。我了解 Jetty 不是 JavaEE 服务器,因此我们尝试添加依赖项。看看我们的方法:

            <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.3.9.v20160517</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.openejb</groupId>
                    <artifactId>javaee-api</artifactId>
                    <version>6.0-6</version>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-validator</artifactId>
                    <version>4.3.2.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.jboss.weld.se</groupId>
                    <artifactId>weld-se-core</artifactId>
                    <version>1.1.33.Final</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.openejb</groupId>
                    <artifactId>openejb-core</artifactId>
                    <version>4.7.4</version>
                </dependency>
            </dependencies>
        </plugin>

不幸的是,每次尝试通过与我们在 TomEE 中使用的 URL 相同的 URL 联系我们的应用程序都会给我们一个 404。请注意,自从尝试迁移到 Jetty 后,我们的 Java 代码没有任何变化。

我做了很多谷歌搜索,但想出的却很少。 ThisSE 问题找到了,不过是在 Jetty 6 的时候写的。我们用的是 Jetty 9,所以 Servlet 版本已经不是问题了。

那么,这里有人认为这可以做到吗?

更多细节: 我们正在使用 JavaEE 6, 我们专注于获取 CDI 和 Bean Validation,其他 EE 功能并不重要。

【问题讨论】:

  • 这是完全可行的,可能不会太难,但你可能想从一个骨架项目开始。简单地添加 maven 依赖项可能还不够。只需习惯于启动码头并首先公开一个 servlet。然后添加焊接和您需要的任何其他功能。例如,按照焊接文档中的说明进行操作:eclipse.org/jetty/documentation/9.3.x/framework-weld.html
  • 另外,它可能刚刚奏效。 jetty 在与 tomcat 不同的默认端口上启动。
  • 我还将首先使用 jetty-distribution 支持您的应用程序,根据需要启用 cdi 模块等。然后,一旦您将这个工作步骤返回到 maven 插件中以用于开发目的。您永远不应该将任何 maven 插件用于“生产”部署场景。
  • 是否有任何堆栈跟踪?日志中有任何内容吗?

标签: jakarta-ee jetty bean-validation maven-jetty-plugin openejb


【解决方案1】:

openejb 和weld 可能无法一起工作,因此要么使用openwebbeans(与openejb 传递),要么如果必须使用weld,则不要使用openejb。

遗憾的是,openejb 没有与 jetty 集成,因此根据您的使用情况,您可以简单地在过滤器或任何启动挂钩中将 openejb 放在 jetty 旁边,或者您必须自己集成它们以获得更高级的集成。

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2012-11-08
    • 2012-03-10
    • 2014-07-22
    • 2011-01-31
    相关资源
    最近更新 更多