2013-03-19 63 views
6

我正在開發基於Spring MVC和Hibernate的新應用程序來進行數據訪問。 我希望數據訪問層在單獨的應用程序服務器上運行,最好是JBOSS。DAO在不同的應用程序服務器上

我希望數據訪問層在防火牆後面運行。

我該如何做到這一點?

現在我擔心在這種情況下休眠惰性初始化。 Hibernate的懶惰初始化會有什麼問題嗎?

回答

1

這種方法可能會有一些性能損失 - IO將成爲瓶頸。不過,Spring Remoting可以讓你輕鬆實現這一點。

  • 爲您創建一個接口DAO。
  • 實施具體實施。
  • 使用spring remoting來導出界面。
  • 注入接口 - 從您的應用程序角度來看,它只是實現接口的東西。它並不關心這些調用正在被觸發到遠程服務器。

實現此功能的機制被稱爲DynamicProxies - Java SE功能。 DynamicProxies允許您在運行時提供一個響應接口上方法調用的類。在這種情況下,方法調用被分派到遠程服務器上的相應方法。

服務層和DAO層服務器都應位於同一個域上的防火牆後面。

1

在UI中,使用REST Web服務從應用程序服務器(託管DAO和事務服務)獲取數據。用@Proxy(lazy=false)註釋實體類,以避免延遲加載實體。要讓服務器驗證客戶端(Web應用程序查詢防火牆後面的業務層),請使用客戶端身份證書,您可以使用Bouncy Castle CMS API驗證身份,信任和消息完整性。如果網絡中有SSL卸載程序,請使用http(s)標題中的分離簽名。

相關問題