2011-04-11 95 views
4

我最後一次做Java Web開發是在2004年使用Java Servlets和JSP。我從來沒有真正使用過EJB。我記得我在開發Web服務\動態網站時遇到的經驗(開發時間較慢)和痛苦(易於部署)方面的經驗。如何學習Java Web服務?

這些天大多數企業用來開發基於Java的網站是什麼?您是否使用AXIS或其他框架來執行Web服務?你在前端使用JSP還是其他技術?

+1

您的意思是Web服務與狹義上的WSDL或REST驅動服務或Java驅動的網站一樣嗎? – justkt 2011-04-11 20:52:59

回答

5

當前的標準是使用JAX-WS(用於SOAP Web服務)和JAX-RS(用於RESTful Web服務)。

這些是有多個實現的標準。 JAX-WS有地鐵,CXF等JAX-RS已經新澤西的RESTEasy等

1

我會爲了

  • REST
  • XSD
  • WSDL
  • JAX-學習這些*
  • 替代品? (Thrift,Avro,協議緩衝區等)
1

從2004年開始,工具支持和開發的便捷性也有了很大的提高。隨着對輕量級框架的日益關注(部分歸功於Spring),實現了web java中的服務並不容易。

在決定實施Web服務之前,您需要回答一個簡單的問題。肥皂或REST.I建議你形成自己的觀點,但這是我能想到的,在我頭上。 SOAP的

優點:

  1. 優秀的工具支持。
  2. 最流行的技術。
  3. JAX-WS標準非常成熟。
  4. 易於開發。 (註解支持將POJO轉換爲webservice)。
  5. 示例METRO,Axis ...

Cons of SOAP。 (Ask Roy Fielding ..)

  1. 膨脹協議。
  2. 協議的自定義是可能的,但很複雜。 (使用wsdl綁定等)。
  3. 客戶端需要複雜的庫來序列化和反序列化soap消息。
  4. 像Android這樣的平臺本身不支持SOAP。

上臃腫的Web服務協議webservices,他長出了常識的說法使用互聯網的SOA的背部骨羅伊Fieldings咆哮之後,出現了對REST一個平緩的動作。像Google和亞馬遜這樣的敏捷公司已經採用了REST,並且正在支持基於REST的Web服務。REST的

優點:

  1. 非常輕量級協議。
  2. 主要基於HTTP,因此大多數客戶知道如何使用。 (但REST不一定是HTTP)。
  3. 錯誤像Cache這樣的管理和想法基於成熟的Internet技術。
  4. Java擁有出色的REST庫。 Sun自己的Jersey是一個優秀的Jax-RS參考實現,並且有Restlet,Jboss Rest Framework和Spring REST(儘管不符合JAX-RS)。 REST的

缺點:

  1. 相對較差的工具支持。
  2. REST中的安全實現有點困難。
  3. 面向資源的設計和實現對於一些傳統的程序員和架構師來說可能是新的。

我的偏好是REST和Jersey。它是一個了不起的框架,出色的支持,出色的文檔和用於測試的良好支持庫。

無論哪種方式,我將下載Netbeans IDE並使用它來開發基於REST或SOAP的Web服務的skeletol代碼。 Netbeans使得開始非常容易。一旦您熟悉代碼,就可以切換到您最喜歡的IDE。 (順便說一句,除了原型設計之外,我不使用Netbeans,它試圖做很多事情,並且其中大部分都很糟糕......無論如何我的意見)

1

我的意願是Apache Avro(在@ rodrigoap的答案中提到)。我現在在哪裏工作,我們有一個面向服務的架構,並使用Avro來提供內部服務。我們之所以選擇它是因爲它速度快,穩定,可以運行在http上(可以輕鬆地從Tomcat提供服務),可以自動生成客戶端類,並且可以使用多種語言。客戶類的生成對我們來說是一個很大的特性,因爲它意味着我們只處理Java對象,並讓Avro處理序列化並通過網絡發送內容。不用處理很多不同的url也是很好的。 Avro webservice由單個servlet託管,Avro負責如何將每個請求映射到實施類中的相應方法。

要再次引用@ rodrigoap的答案,他在Avro列表中放置了幾個其他選項,並且對於外部訪問的Web服務,我同意這些選擇是更好的選擇,因爲您的外部服務用戶可能不是'因爲您可能選擇了Avro而對此感興趣。

如果您對示例感興趣,可以參考sample Avro web service項目,瞭解它是如何工作的。