2009-01-14 73 views
23

目前我正在評估Java中的Web服務框架的數量。我需要Web服務框架,它將幫助我公開在JBoss上運行的現有應用程序的一些功能。該應用程序大部分是使用Spring和POJO(沒有EJB)開發的。Java Web服務框架/庫,這是一個更好的,爲什麼?

我需要的是具有以下性質的框架:

  1. 它應該提供自動生成的樣板代碼的工具,並通過消除重複的任務,從而節省時間,例如工具從Java(的Java2WSDL)生成WSDL,工具生成端點等。
  2. 應用程序應該很容易部署在現有的J2EE平臺(JBoss)上,這意味着它應該包含儘可能少的配置文件(如axis2框架中的axis2.xml)。
    • 此外,它最好能夠在.war之間部署網絡服務存檔應用程序。 (看起來Axis2需要Web服務應用程序的單獨存檔)。
    • 使用POJO彈簧的組合將會非常酷。
    • 一般來說,框架應該有乾淨的結構和設計(例如Spring-WS缺少它),良好的文檔和任何其他特徵來表徵一個好的軟件。
    • 該框架優選包含一些標準特徵,如JAX-WS等,而不是供應商特定的方法。

我已經簡單地檢查

  • Axis2的
  • 的Apache CXF
  • 和Sun的地鐵
  • 春WS

,但它仍然是很難決定什麼在我的情況下使用:

  • Axis2的似乎是如此之低的水平,它需要單獨的應用程序歸檔和大量配置
  • 春WS似乎過於不透明和「複雜的印象的目的(?)」
  • 的Apache CXF和新城可能是我更喜歡選擇的兩個框架,但仍然是

我需要您的意見和經驗,以瞭解其中某些框架在實際應用中的用法。

回答

23

我已經使用CXF的先行者XFire了一段時間了,它並沒有太壞。當時,我們從Axis遷移出來主要有兩個原因:性能和開發難度。當時(不知道現在是否是這樣),XFire的性能比其他任何東西都好,並且使用註釋驅動開發,而不必運行存根生成,真的很容易添加新的網頁服務。

CXF看起來更像是相同但更好 - 由於開發時間的限制以及沒有緊迫的理由,我們還沒有遷移(加上6-12個月前相對缺乏文檔並不是太鼓舞人心)。此外,我還沒有真正評估過遲的市場,所以我不能告訴你CXF如何與當代競爭對手相提並論。

關於你的觀點:

  1. 還有就是不產生樣板代碼,將WSDL自動從服務類的註釋創建並由服務器發佈。
  2. Tomcat中的部署相對簡單。只需在web.xml中定義另一個servlet並將URL模式映射到此servlet即可。
  3. 我們的Web服務被部署在WAR文件,我不知道是什麼替代品的事實,而是這似乎是默認的和明顯的方式做到這一點。
  4. POJOs最初工作正常;我們現在已經將大部分Web服務對象創建轉移到Spring,以便連接更復雜的條件依賴項,並且沒有任何問題。
  5. 文件是CXF最初的一個薄弱環節,雖然剛剛看了一下,現在看起來似乎更好。總體設計和架構似乎相對理智;插入自己的過濾器來修改傳輸細節並不是很痛苦,並且擴展現有的類已經被普遍考慮(例如,明智的方法被標記爲受保護而不是私有的)。
  6. CXAX完全支持JAX-WS。

所以我可能是一個公正的,因爲我沒有嘗試過其他的,但我會豎起大拇指來看看CXF。這很快,相對簡單,如果你需要調整它,它的功能相當強大。

+0

我已經做了兩個的XFire和CXF和升級是比較painfree使用。 XML配置文件有點不同,但並不多。 – 2010-05-11 14:56:17

3

我會先用Spring WS和XFire第二。我是Spring用戶,所以我習慣了不透明。

2

的XFire現在的Apache CXF很遠高於更容易軸使用。在Axis看起來過於複雜的情況下,我使用它的速度非常快。我沒有看到Spring WS。

1

我只用了Spring WS因爲那是我被告知要使用,但它是一個非常容易使用的框架。如果你不得不採取其他措施,那麼由於JAX-WS的支持,我會使用XFire。

4

我們試圖Metro和CXF並保持CXF因爲地鐵包含太多的依賴就像Sun在它的jar文件的API,這使得它很難比Glassfish的另一個應用程序服務器集成。 CXF具有清晰的外部依賴關係。 我們也未能在地鐵上啓用Gzip壓縮,而它像CXF的魅力一樣工作。

2

我將使用CXF。這是很容易比Axis2的