2012-08-10 63 views
1

技術堆棧:Java 1.6的,JPA(休眠3),春季3,是Oracle 11g,JAX-RS(的RESTEasy)的Freemarker,春天的Webflow,jQuery的,JBoss5問題的REST Web服務和客戶端的設計

你好,

目前我工作的一個項目,我們有兩套功能的:

  1. 要出版一套Web服務(REST風格)外部客戶消耗。
  2. 要創建基本上允許執行管理功能的一組屏幕(大約10)例如,創建MI報告,設置新數據,配置和查看過去的數據。

我的做法是:

  1. 要創建一個服務層
  2. 的Webflow和Freemarker的模板調用該服務層上的方法。

  3. 然後再次使用相同的服務層爲REST(@Path)創建另一個組件層。

在一個設計會議有人現在建議如下:

  1. 單獨的中到單獨的模塊的層(如在行家)
  2. 創建模塊每一個用於:

    a2。 RESTful服務(帶服務層和javax.ws.rs.Produces)

    b2。帶有服務層調用模塊a2中發佈的服務的屏幕。這將使用org.apache.commons.httpclient。 HttpClient來調用a2服務。

我不確定我是否真的能看到好處,或者這是否是正確的方法。 我想也許我不會拒絕建議的方法。

有人可以詳細說明哪種方法更好,爲什麼?

感謝, ADI

+2

聽起來不錯,但使用JAX-RS不會使一個系統問題的REST。爲此,您必須考慮您的資源及其代表是什麼。 – 2012-08-10 09:12:30

+0

哪種方法可行? – adi 2012-08-10 09:27:00

回答

1

恕我直言,這是沒有必要使用HttpClient的一切訪問服務層。

這種機制將產生一個巨大無用CPU開銷(序列化/假HTTP傳輸/反序列化消息)2層非常接近(在相同的戰爭)之間進行通信。

如果您確定管理屏幕和REST服務將始終部署在一起,請使用直接通信,保持務實。

你應該保留一個maven項目。無需爲10個屏幕和5個REST服務創建複雜的項目。把事情簡單化。

創建一個處理業務+服務層。 創建具有2個獨立的實施方式中的傳輸層:

  • 一個用於REST服務直接調用從服務層
  • 一個Java類的給藥,也直接從服務層調用java類

如果你真的想創建Maven的模塊, - 創建一個模塊捆綁在一個罐子裏 商業服務類 - 創建兩個模塊捆綁在2個獨立的罐子的傳輸實現0 - 創建一個模塊捆綁業務services.jar,兩個運輸implementation.jar和它們的依賴在戰爭

HIH