2012-05-04 65 views
6

我們有一個用Tapestry 4.1編寫的大型,笨重但相當穩定的Web應用程序,我們正在逐步遷移。爲此,我們正在研究在Grails中開發一些新功能。我們的客戶永遠不應該知道其中的差異,如果可能的話,內部沒有人,例如在安裝服務中,應該不得不關心 - 理想情況下,Grails應用程序將與現有的Tapestry代碼處於相同的WAR中,僅爲GrailsDispatcherServlet配置了更具體的路徑。對於現有應用程序的怪物構建過程的最小改變也很重要 - 在Gant和Ivy中重建構建系統(目前Ant,轉換到Maven)不是一種選擇。如果我們可以在開發過程中使用爆炸WAR進行實時重新加載,那將會很好。將Grails與現有Web應用程序集成

問題,然後:

  • 這可能嗎?
  • 如果是這樣,我從哪裏開始?
  • 如果不是,下一步最好的方法是什麼?
  • 我需要注意什麼?

請注意,我們不會使用GORM;我們所有的數據都來自Web服務,我們已經擁有Java域和消息傳遞層。

+0

你使用hibernate來保存數據還是使用別的東西? – allthenutsandbolts

+0

只是一些想法 - 如何分別創建Grails應用程序,然後將Grails應用程序的戰爭與原始應用程序的戰爭捆綁爲一個.ear文件?這樣,你可以保持原來的構建,讓Grails按照它的方式工作,並在最後添加額外的步驟來構建.ear文件。最大的問題是兩者之間的整合程度,整合點是什麼,以及如何取消合適的url重寫以使其看起來無縫。 – GreyBeardedGeek

+0

除了使用Java而不使用Groovy之外,聽起來好像你可以通過做Spring MVC(Grails的一個主要組件)來更好地服務。 –

回答

1

您可以編輯該模板的web.xml中通過運行的Grails安裝模板命令

可以使用Ant & Maven(或搖籃)來構建一個Grails應用程序,但因爲不是改變servlet映射「標準「的方法,我的經驗是,一些小調整可能是必要的。我已經使用Ant集成(使用ivy進行依賴)來構建和使用Gradle來包裝Ant並修改構建以滿足特殊需求。

您可能遇到的問題是,Gant腳本是Grails的核心,並且在這些腳本中發生很多事情(取決於您使用的插件),可能會導致嘗試將兩個構建合併在一起的問題,因爲腳本不是記在你的使用案例中。

2

好消息:是的,這是可能的。

壞消息:有點毛。

至少有2路:

  1. 作爲建議的迪倫,修改Grails的建設,以適應現有的應用程序,有一些調整。
  2. 創建另一個Ant目標,將現有WAR文件與由Grails生成的WAR文件組合在一起。

第一個選項,修改Grails構建。風險在於Grails更新版本時,自定義和調整的Grails構建可能會失敗,並且您不會在這裏或那裏結束。解決這個問題需要深入瞭解框架如何生成構建。由於這是您最初遇到的新框架,因此學習曲線可能太陡。

我更喜歡第二個,因爲你不需要搞亂Grails構建。您需要知道底層,web.xml配置如何工作。我假設你已經有了這方面的知識,因爲你也已經有了自己的Ant構建。這可能是阻力最小的路徑。

第二種方法的缺點是在開發過程中很難有爆炸的WAR。但是,如果您可以將舊應用程序和新應用程序分開,而無需在開發過程中一起測試它們,那麼在使用輕量級開發服務器在Grails中進行開發時,您將有一段美好的時光。

下一步將會讓舊的應用程序能夠在Grails中作爲Java組件被Grails調用時運行。

相關問題