7

谁能告诉我目前是否可以通过 Jetty 将部分 Java EE 6 Web 配置文件“粘合在一起”?我发现了很多关于将独立的 EJB 3 容器、JTA 提供程序等与旧 Jetty 版本集成的文章,所以如果我能让它们一起工作,我很想知道。我想在 Jetty 8 上组装一个 Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的只是声明性事务管理)+ JPA 2 环境(如果没有可用的 Jetty 替代品,则为 Tomcat 7)。我的问题是:可以做到吗?有没有人设法做到这一点?有关于让 OpenEJB、Atomikos、Weld、EclipseLink 和 Jetty(或任何其他类似堆栈)一起工作的文章吗?那里有任何神奇的“做这一切” pom.xml 文件吗?

PS:是的,我知道我可以只使用 GlassFish(我非常喜欢)。我只是想知道使用 Servlet 容器来实现类似的工作有多难,以及这两种环境在复杂性、性能、大小、部署速度、硬件资源消耗等方面的比较如何。

4

4 回答 4

9

我认为这仍处于早期阶段,但这是我们目前所拥有的:

http://svn.apache.org/repos/asf/openejb/trunk/openejb3/assembly/openejb-jetty/

请注意,Apache TomEE 存在于类似的路径中,即“assembly/openejb-tomcat”。计划是调用 Jetty 版本的 Apache JetSet 并让它完全可嵌入。大多数有承诺的人目前正在努力让 Apache TomEE 获得正式的 Java EE 6 Web Profile 认证。我会将这项工作描述为处于后期阶段。我们在 Amazon EC2 中有一个很好的设置,可以使用一百个 EC2 t1.micro 现货实例针对 TomEE 运行 Web 配置文件 TCK。它很甜。与 Apache 和 Oracle 的 TCK 协议不允许我们公开共享访问权限。但是,任何 Apache 提交者都可以签署 NDA 以获得访问权限。

好的,所以我提到了关于 TomEE 的所有内容,因为计划是一旦我们完成了 Tomcat 版本,就可以使用 Jetty (JetSet) 重新做一遍。我们中的许多提交者,例如我自己和 Jonathan Gallimore,实际上在很大程度上更喜欢 Jetty。但由于 Tomcat 集成代码更进一步并且拥有更多用户,我们决定先完成那个。我们将能够在 Jetty 版本中利用大量非 Tomcat 特定的工作;合法地访问 TCK,让它运行的代码堆,让它自动化的代码堆,以及许多通用的而不是 Tomcat 特有的集成位。

综上所述,其他人没有理由仅仅因为我们大多数人仍在完成 Tomcat 版本而等待开发 Jetty 版本。Apache 项目应该被视为一起工作的个体,而不是像 Oracle、Redhat 或 VMWare 这样的公司。这可能是好的也可能是坏的。好消息是,如果您或其他任何人想要破解 Jetty 版本,您现在就可以这样做。在获得提交之前,您必须提交一段时间的补丁,但是让其他人执行实际的提交命令并没有那么糟糕。如果您从小处着手并保持活跃和开放,通常很容易获得承诺。快速获得补丁的关键是源源不断的小到中等大小的补丁。在我看来,任何向前或侧向而没有后退的步骤都是一个很好的补丁。只要人们能看到你的位置' 再去就好了。当然比一个大补丁的方法更敏捷,并且允许所有真正有趣和协作的魔法在此过程中发生。

一些线程是打招呼的好地方。第 1 步只是打个招呼。无需手头有代码就可以在开发列表上讨论或被认真对待:

http://openejb.979440.n4.nabble.com/Jetty-Integration-td1457408.html http://openejb.979440.n4.nabble.com/Jetty-Integration-td2318962.html

于 2011-05-03T23:06:04.610 回答
4

Tomcat 在名为 TomEE(以前称为 TomTom)的服务器中实现了该堆栈。

这些是它使用的组件。

Connector    Apache Geronimo Connector
CDI  Apache OpenWebBeans
EJB  Apache OpenEJB
Javamail     Apache Geronimo JavaMail
JPA  Apache OpenJPA
JSF  Apache MyFaces
JSP  Apache Tomcat
JSTL     Apache Tomcat
JTA  Apache Geronimo Transaction
Servlet  Apache Tomcat

至于码头,我不确定。OpenEJB 是 JavaEE6 容器(AFAIK)之外的 EJB 的唯一选择,我不确定 Jetty 是否经过 100% 的测试。对于 CDI,您始终可以使用 Seam 之类的东西。

在我看来,我相信 Spring 框架将是 Jetty 容器的最佳选择(不过这只是我的观点)。根据我在尝试让 Tomcat 与 Open EJB 一起工作后的经验,Spring 的设置要容易得多。

您还必须记住,此时 Open EJB 还没有实现整个 EJB 3.1 堆栈。

Open EJB 也没有在 Tomcat 7 上测试。所以如果你走那条路,你必须留在Tomcat 6。

于 2011-04-27T13:41:32.863 回答
2

OpenEjb 还没有发布支持 JPA2 的版本,尽管他们的开发版本支持 JPA2 Fine AFAIK。我在 Jetty6 中使用嵌入式 OpenEjb,因为我还无法让我的应用程序在较新的码头上工作。我认为正在努力使 OpenEJB 与 TomEE 等 Jetty 紧密集成,但这可能还有一段路要走。

于 2011-04-29T20:51:49.357 回答
2

Geronimo是一个完整的 J2EE 堆栈,运行在 Jetty 之上。

在https://cwiki.apache.org/GMOxDOC30/configuring-virtual-host-in-jetty.html上有一个关于其设置的文档

于 2012-01-26T19:32:54.773 回答