Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2堆栈?

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

PS:是的,我知道我可以使用GlassFish(我非常喜欢)。 我只是想知道如何使用Servlet容器获得类似的function,以及两个环境在复杂性,性能,大小,部署速度,硬件资源消耗等方面的比较。

我将其描述为仍处于早期阶段,但这是我们迄今为止所拥有的:

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集成代码的进一步发展并拥有更多用户,我们决定首先完成该代码。 有大量的工作不是Tomcat特定的,我们将能够在Jetty版本中使用; 合法访问TCK,使其运行的代码堆,更多的代码使其自动化,以及许多通用且不特定于Tomcat的集成位。

所有这一切,没有理由让其他人不得不等待Jetty版本,因为我们大多数人仍在完成Tomcat版本。 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

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 

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

在我看来,我相信Spring框架将是Jetty容器的最佳选择(虽然这只是我的看法)。 根据我在尝试让Tomcat使用Open EJB之后的经验,Spring设置起来要容易得多。

您还必须记住Open EJB在此时不实现整个EJB 3.1堆栈。

此外,Open Tom也未在Tomcat 7上进行测试。 因此,如果你走这条路,你必须留在Tomcat 6。

OpenEjb尚未发布支持JPA2的版本,尽管它们的开发版本支持JPA2精细AFAIK。 我在Jetty6中使用嵌入式OpenEjb,因为我无法让我的应用程序在更新的docker工作。 我认为正在开展一项工作,让OpenEJB与Jetty紧密集成,如TomEE,但这可能还有一段距离……

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

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