1

我对 Java 世界还很陌生,并且对数十个库之间的选择之美感到不知所措,这些库或多或少都在做同样的事情,或者不做同样的事情。

Jetty 和 CXF 也是如此。我正在寻找一个内置支持多种传输和协议的 Web 服务堆栈。

我的印象是 CXF 是较新的项目,将是新软件项目的首选。尤其是涉及到必须使用各种不同协议和标准(如 WS-*)的应用程序时。

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

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

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

任何形式的答案都非常受欢迎!

干杯,亚历克斯

4

3 回答 3

11

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

于 2009-11-12T20:11:33.103 回答
7

这里有个误区,Jetty 和 CXF 就像苹果和橘子,拿来比较是没有意义的。一个是轻量级 servlet 引擎,另一个是 Web 服务堆栈。

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

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

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

实际上,我认为支持最多 WS-* 标准的堆栈是 Metro。您可能需要检查Apache Axis2、CXF 和 Sun JAX-WS RI 以了解更多详细信息。但是,您不太可能需要所有这些,并且自文章发表以来,情况可能略有变化。所以 CXF 可能确实是一个替代方案。例如,关于 WS-SecureConversation,CXF 根据其文档也支持它,但仅限于“wsdl-first”项目。如果没有关于你将要做什么的更多细节,很难给你一个更准确的答案,告诉你哪一个最适合你。)

于 2009-11-12T20:23:15.410 回答
0

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

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

CXF 看起来是个明智的选择。如有疑问,我会说使用基于它们的标准和框架。我想说仔细阅读文档,对于复杂的事情,您可能想要订阅一些邮件列表。

于 2009-11-12T20:19:21.313 回答