2009-11-12 51 views
0

我對Java世界相當陌生,幾十個圖書館之間的選擇之美非常不知所措,它們或多或少地做了相同的事情,或者不是。碼頭vs CXF /哪一個可供選擇?

所以用Jetty和CXF。我正在尋找一個內置支持各種傳輸和協議的Web服務堆棧。

我的印象是,CXF是更近的項目,將成爲新的軟件項目的首選下。尤其是當涉及到需要討論各種不同協議和標準(如WS- *)的應用程序時。

你可以給你這些框架是如何彼此不同的看法?

哪一個具有不同的協議和標準,更廣泛的支持?

哪一個你喜歡它的設計,例如:它們如何從應用程序邏輯中隱藏傳輸,身份驗證,授權,序列化方面?

任何一種答案非常歡迎!

乾杯,亞歷克斯

回答

5

有一個誤區,在這裏,碼頭和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,TCP over SOAP),請考慮使用Metro Metro = JAX-WS RI + WSIT/Tango)。

(編輯:在回答有關WS-SecureConversation的支持OP評論

其實,我認爲,這支持最WS- *標準堆棧地鐵。您可能需要檢查Apache Axis2, CXF and Sun JAX-WS RI in comparison瞭解更多詳情。但是,你不太可能需要所有這些,而且自文章發表以來,事情可能會有所變化。所以CXF可能確實是一種選擇。例如,關於WS-SecureConversation,CXF也支持它,根據它的documentation,但只有「wsdl-first」項目。沒有關於你將要做什麼的更多細節,很難給你一個關於哪一個最適合你的更準確的答案。)

+0

非常有趣! 「WS-SecureConversation」,是的,我需要它。據我瞭解CXF會支持它? – Alex 2009-11-13 08:31:45

+0

我已經更新了我的答案以涵蓋這部分。 – 2009-11-13 10:51:01

+0

明智的答案,夥計們!泰伊讓我朝着正確的方向前進,我想。 – Alex 2009-11-14 00:15:19

11

碼頭是一個Web服務器和servlet容器。 CXF是一個用於Web服務的庫。如果您想要像使用網絡服務器那樣提供內容,請選擇Jetty。如果您需要連接或提供Web服務,請選擇CXF。我不確定兩者之間有沒有模糊的區域。

+0

太好了,這正是我期待的那種澄清! 比方說,我有一個像OSGi這樣的容器框架,並且想要公開一個Web服務。說我將把一個基於CXF的組件作爲一個OSGi包託管是否正確? 現在我明白了:Jetty =可嵌入的Web服務器,CXF = Web服務框架,它支持像HTTP這樣的傳輸。因此它不依賴於像Jetty這樣的主機? – Alex 2009-11-13 08:27:39

+0

是的,您可以將CXF組件作爲OSGi包託管。如果您只連接到一個http端點,則不需要Jetty或OSGi HttpService,因爲CXF可以使用任何各種http客戶端庫進行連接。儘管如果你想通過HTTP接收連接,CXF似乎使用Jetty,如本文檔條目[1]所示。如果您還部署了OSGi HttpService,則需要確保它和CXF Jetty實例位於不同的端口上。 [1] http://cwiki.apache.org/CXF20DOC/standalone-http-transport.html – Carl 2009-11-13 13:55:10

+0

明智的答案,傢伙!泰伊讓我朝着正確的方向前進,我想。 – Alex 2009-11-14 00:14:47

0

碼頭是一個服務器(servlet容器),所以是Tomcat和其他少數。 Jetty很體面,Tomcat已經有一段時間了,並且有更多的文檔和教程。

CXF看起來像一個有趣的選擇。我只使用直接實現和CXF是相當新的,我認爲這是XFire項目的延續。

CXF看起來像一個明智的選擇。如果有疑問,我想說的是建立在它們之上的標準和框架。我會說通過文檔和複雜的事情,你可能想訂閱一些郵件列表。

+1

CXF(CeltiXfire)是Celtix(IONA)和Xfire(Codehaus)的合併。 – 2009-11-12 20:30:40

相關問題