我对Java世界还是比较陌生的,并且在几十个或多或少做同样事情的图书馆之间选择的美丽让我感到不知所措.
有了Jetty和CXF.我正在寻找一个内置支持各种传输和协议的Web服务堆栈.
我的印象是CXF是最近的项目,并且将成为新软件项目的首选.特别是在涉及各种不同协议和标准(如WS-*)的应用程序时.
您能否就这些框架之间的差异发表意见?
哪一个对不同的协议和标准有更广泛的支持?
您更喜欢哪一个设计,例如它们如何将应用程序逻辑中的传输,身份验证,授权,序列化方面隐藏起来?
任何一种答案都非常欢迎!
干杯,亚历克斯
Jetty是一个Web服务器和servlet容器.CXF是一个用于Web服务的库.如果要提供与Web服务器相同的内容,请选择Jetty.如果需要连接或提供Web服务,请选择CXF.我不确定两者之间是否有任何模糊区域.
这里有一个误解,Jetty和CXF就像苹果和橘子,比较它们是没有意义的.一个是轻型servlet引擎,另一个是Web服务堆栈.
如果您正在寻找Web服务堆栈(这是我的理解),请考虑JAX-WS RI或CXF,如果您正在寻找符合JAX-WS的堆栈(支持契约优先或java优先)或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和Sun JAX-WS RI以获取更多详细信息.但是,你不太可能需要所有这些内容,而且自文章发布以来,事情可能会略有改变.所以CXF可能确实是另一种选择.例如,关于WS-SecureConversation,CXF也根据其文档支持它,但仅支持"wsdl-first"项目.如果没有关于你将要做什么的更多细节,很难给你一个更准确的答案,关于哪一个最适合你.)