2010-07-21 26 views
1

我們正在研究一個由多個Web服務組成的SOA項目。如何在單個彈簧容器中加載多個jax-ws Web服務

每個Web服務都基於Metro JAX-WS Framework並在內部使用spring和hibernate.Each Web服務作爲單獨的彈簧容器內的Web應用程序加載。

這意味着我們的部署體系結構由多個web應用程序組成,每個應用程序運行不同的服務。

但是我們正面臨一些性能問題,因爲每個Web應用程序加載自己的Spring容器/休眠會話工廠。

可能的替代:

  1. 單一的Web應用程序的單一Spring上下文
  2. 多個Web應用單Spring上下文

我們所有的Web服務將始終在一臺服務器上同時運行。我們的案例最適合什麼架構?以及如何實現這一點,即如何在多個Web服務中使用單一的Spring上下文?

回答

1

「最好的架構」中的「最好」是相當主觀的,因爲它取決於你目前的架構,而你沒有很好地定義它。

不過,我有一些建議:

  1. 考慮維修的影響,即整合在一個單一的Web應用程序與您的服務業務邏輯都會有,更何況所有的彈簧configured-豆,你將不得不相互糾纏重新包括你所有的服務。從這個意義上講,根據我的經驗,保持單獨的網絡應用程序往往會更好。

  2. 考慮將hibernate會話工廠從每個服務移動到一個集中的位置,例如在JBoss中,可以用.HAR文件的方式創建某種類型的「hibernate接口」,每個服務都會只需要「請求」休眠會話。也許你可以在你的特定應用程序服務器上做類似的事情。有幾種模式可以有效地檢索適用於此的Hibernate Session。

  3. 大多數Web服務性能問題還與它們的使用方式,同步或異步有關。我們通過在封面上實現一個消息系統來解決這個問題,以便異步處理Web服務請求,無論何時請求到達時,您都將它們放入Queue中,還有其他服務正在等待某些類型的請求來處理它們。這可以通過Spring和ActiveMQ輕鬆實現。

這就夠了。

問候。

+0

嗨Joeshph, 一個不同的查詢涉及相同的體系結構。所有的Web服務在內部使用相同的數據庫。我們如何進行跨多個服務的交易?請問您提出的Hibernate方法是否解決了這個問題,或者我們是否需要去JTA。 – user398039 2011-04-15 11:38:52