Jetty vs CXF /哪一个可供选择?

时间:2009-11-12 20:02:02

标签: java web-services jetty cxf

我对Java世界还很陌生,而且几十个图书馆之间或多或少做同样的事情,选择之美让人不知所措。

所以使用Jetty和CXF。我正在寻找一个内置支持各种传输和协议的Web服务堆栈。

我的印象是CXF是最近的项目,并且将成为新软件项目的首选。特别是涉及到必须谈论各种不同协议和标准的应用程序,如WS - *。

您能否就这些框架之间的差异发表意见?

哪一个对不同的协议和标准有更广泛的支持?

对于其设计,您更喜欢哪一个,例如它们如何将应用程序逻辑中的传输,身份验证,授权,序列化方面隐藏起来?

任何答案都非常欢迎!

干杯, 亚历

3 个答案:

答案 0 :(得分:11)

Jetty是一个Web服务器和servlet容器。 CXF是一个用于Web服务的库。如果要提供与Web服务器相同的内容,请选择Jetty。如果需要连接或提供Web服务,请选择CXF。我不确定两者之间是否有任何模糊区域。

答案 1 :(得分:7)

这里有一个误解,Jetty和CXF就像苹果和橘子,比较它们没有意义。一个是轻型servlet引擎,另一个是Web服务堆栈。

如果您正在寻找Web服务堆栈(这是我的理解),如果您正在寻找符合JAX-WS标准的堆栈(支持契约优先或java优先),请考虑使用JAX-WS RI或CXF,或SpringWS(“仅”合同优先),或者Axis2(由于其开发和部署模型及其性能,我个人不喜欢它。)

如果您不需要花哨的WS- *东西,我建议使用Java 6中包含的JAX-WS RI并且符合WS-I Basic Profile 1.1(因此它覆盖了一大堆WS- *标准)。如果您需要更高级的东西(如WSIT / Tango提供的WS-SecureConversation,WS-SecurityPolicy,WS-ReliableMessaging,WS-Trust,WS-AtomicTransactions / Coordination,WS-MetadataExchange,SOAP over TCP),请考虑使用Metro( Metro = JAX-WS RI + WSIT / Tango)。

(编辑:回答OP关于WS-SecureConversation支持的评论。

实际上,我认为支持最多WS- *标准的堆栈是Metro。您可能需要查看Apache Axis2, CXF and Sun JAX-WS RI in comparison以获取更多详细信息。但是,你不太可能需要所有这些内容,而且自文章发布以来,事情可能会略有改变。所以CXF可能确实是另一种选择。例如,关于WS-SecureConversation,CXF也根据其documentation支持它,但仅支持“wsdl-first”项目。如果没有关于你将要做什么的更多细节,很难给出一个关于哪一个最适合你的更准确的答案。)

答案 2 :(得分:0)

Jetty是一个服务器(一个servlet容器),Tomcat和其他几个也是如此。 Jetty很不错,Tomcat已经存在了一段时间,并且有更多的文档和教程。

CXF看起来是一个有趣的选择。我只使用直接实现而CXF相当新,我认为这是XFire项目的延续。

CXF看起来是明智的选择。如果有疑问,我会说采用基于它们的标准和框架。我会说通过文档和复杂的事情,你可能想订阅一些邮件列表。