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

7
有人能告诉我是否可以在Jetty上“粘合”部分Java EE 6 Web Profile吗? 我发现了很多关于将独立的EJB 3容器、JTA提供程序等与旧版本的Jetty集成的文章,所以我想知道是否可以让它们一起工作。 我想在Jetty 8(如果没有Jetty替代品,则使用Tomcat 7)上组装Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的只是声明式事务管理)+ JPA 2环境。 我的问题是:这可行吗?有人成功实现了吗?有关获取OpenEJB、Atomikos、Weld、EclipseLink和Jetty(或任何其他类似堆栈)一起工作的文章吗?有神奇的“做所有事情”的pom.xml文件吗?
附:是的,我知道我可以使用GlassFish(我非常喜欢它)。我只是想知道使用Servlet容器会有多难,并且这两个环境在复杂性、性能、大小、部署速度、硬件资源消耗等方面如何比较。

@AmanicA,感谢您编辑标签,希望这将吸引更多人关注此帖。 - Anthony Accioly
2
我们正在OpenEJB项目中认证Apache TomEE(如下所述)。完成后,我们希望也能做一个Jetty堆栈,并称其为Apache JetSet。实际上,它已经开始了,如果您想对其进行修改并成为将其带给世界的一部分,那太好了!人越多越好! :) 只需在dev@openejb.apache.org列表上打个招呼即可。大多数项目只是使用此类工具的开发人员,并创建他们想要使用的平台。我们实际上的目标是使Jetty版本完全可嵌入,而不像Tomcat版本。 - David Blevins
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 spot实例来运行web profile TCK以测试TomEE。这非常不错。Apache和Oracle的TCK协议不允许我们公开共享访问权限。但是,任何Apache committer都可以签署NDA以获得访问权限。

好的,我提到TomEE的所有内容是因为计划是一旦我们完成Tomcat版本,就用Jetty(JetSet)重新开始。我们许多提交者,例如我和Jonathan Gallimore,实际上更喜欢Jetty。但是由于Tomcat集成代码已经更加成熟并且拥有更多用户,我们决定先完成它。在Jetty版本中,有大量与Tomcat无关的工作可以利用,包括合法获得TCK的访问权、使其运行所需的大量代码、自动化所需的更多代码以及许多通用的集成部件,这些部件不特定于Tomcat。

所有这些说法都没有理由让其他人因为我们大多数人还在完成Tomcat版本而等待开始Jetty版本的工作。Apache项目应该被视为个体合作,而不是像Oracle、Redhat或VMWare这样的公司。这既有好处也有坏处。好处是,如果你或其他任何人想要对Jetty版本进行修改,你现在就可以做到。你将不得不提交补丁一段时间,直到获得提交权限,但让其他人执行实际的提交命令并不是那么糟糕的事情。如果你从小处开始,保持活跃和开放,通常很容易获得提交权限。快速获取补丁的关键是持续不断地提交小到中等大小的补丁。在我看来,任何向前或向侧面迈出的步伐,没有后退的步骤,都是一个好的补丁。只要人们能看到你的方向,就足够好了。这种方法显然比一次性提交更加敏捷,并允许所有真正有趣和协作的魔力在途中发生。
以下是一些好地方打招呼的线程。第一步只是打个招呼。在开发列表上谈论或被认真对待无需手头有代码:

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


David,非常感谢,我现在会跟踪进展情况,一旦我找到一些空闲时间,我会尝试提交一些小的补丁。干杯。 - Anthony Accioly

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

就Jetty而言,我不确定。在JavaEE6容器之外,OpenEJB是你唯一的EJB选择(据我所知),而且我不确定Jetty是否与此完全测试过。对于CDI,你总可以使用像Seam这样的东西。
在我看来,Spring框架可能是Jetty容器的最佳选择(这只是我的意见)。在尝试使用Open EJB让Tomcat工作后,根据我的经验,Spring更容易设置。
你还必须记住,在这个时候,Open EJB没有实现整个EJB 3.1堆栈。
此外,Open EJB也没有在Tomcat 7上进行测试。因此,如果您选择这条路,您必须留在Tomcat 6上。

很好,我会检查TomTom。 除了Open EJB之外,我还发现了一些EasyBeans的参考资料。 Spring + AOP事务是堆栈的一个很好的替代方案。 - Anthony Accioly
无论如何,我只是想组合一个替代的Java EE 6 Web Profile堆栈,并查看它在周转时间、容器开销、性能等方面与GlassFish相比如何。我一直是Jetty开发环境的忠实粉丝。 - Anthony Accioly
谢谢你指出EasyBeans。我以前没听说过。我一定会去看看的。实际上,我非常想知道你的结果,因为从我看到的情况来看,Jetty和Tomcat比Glassfish轻得多,但它们只是Servlet容器。我们公司内部使用Glassfish 2和3,但我总是在寻找在Tomcat中运行事物的方法。特别是对于我所做的副业。我在旁边使用Tomcat共享托管,因为它比使用Glassfish的VPS解决方案便宜得多。所以我通常被困在Spring中。 - Drew H
1
请注意,OpenEJB在主干中确实具有完整的EJB 3.1支持,但尚未获得认证。我们希望能够在下一个季度宣布一些Apache TomEE和Apache Geronimo的认证公告。关于EasyBeans,请务必查看,但也请注意它也没有获得认证。 - David Blevins

2
OpenEJB目前尚未发布支持JPA2的版本,但据我所知,它们的开发版本已经能够很好地支持JPA2。 我正在使用嵌入式OpenEJB在Jetty6中运行我的应用程序,因为我还无法使其在更新的Jetty上运行。我认为正在进行将OpenEJB与Jetty紧密集成的工作,就像TomEE一样,但可能还需要一些时间。

是的,我也被Jetty(7)+ Spring + Hibernate 3.5堆栈困住了。我也密切关注Jetty 8路线图。难道我是唯一追求Frankenstein Web配置文件的疯子吗?我的意思是,Java EE 6和Glassfish已经存在一段时间了。我很确定会有一个“轻量级”Web配置文件堆栈的神奇pom文件/ Maven原型。 - Anthony Accioly
2
JPA2 状态更新。在三月初,我们从 3.1.x 分支并合并了来自主干的 JPA2 支持。目前情况良好,我们希望在一两周内发布这个名为 3.2 的新分支。请注意,主干现在被称为 4.0。感谢 Thiago Veronezi 做出的所有出色工作。另一个用户成为了 committer。 - David Blevins

2
"Geronimo是完整的J2EE堆栈,运行在Jetty之上。有一份关于它的设置文档在https://cwiki.apache.org/GMOxDOC30/configuring-virtual-host-in-jetty.html上。"

文档未找到 :) - Adelin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接