2012-07-09 65 views
0

如果我在Tomcat中部署兩次相同的Grails應用程序(即myApplication_first.war,myApplication_second.war),則Tomcat無法部署WAR文件,並且可重現。 它抱怨類XYZ已經存在於TEMP文件夾中(由於之前的部署,這是真的)。 因此,要更改全局Tomcat TEMP文件夾將沒有任何意義,因爲兩個項目無論如何都會再次使用相同的文件夾。如何在Tomcat中兩次部署相同的Grails應用程序?

我通常知道如何部署應用程序兩次,但不是在Grails環境中,因爲它自己管理了很多東西。

有沒有什麼辦法可以實現這個計劃?

我們使用Grails版本1.3.7。

我搜索了很多可能的解決方案,但沒有一個符合我的需求。

  • 部署於多個Tomcat實例
  • 部署只有一個應用程序,並使用一些唯一標識符來識別的強制性/客戶端,用於提供各個數據源之類的東西。 (見deploy the same application multiple times on tomcat
  • 被其他應用程序服務器

一個辦法,來到我的腦海替換Tomcat的,但還是顯得有點怪我,是,在部署期間動態更改所有類的包(與ANT或s.th.一樣)。這樣他們就不會在Tomcat TEMP文件夾中發生衝突。 這可能是一個潛在的解決方案? 它甚至可能以優雅的方式?

親切的問候, 克里斯托弗

回答

0

我有類似的情況,我的解決辦法是「改造」應用到Grails的插件,然後創造更多的(我有6)應用程序,它使用這個插件,並在每個應用程序I改編配置(DataSource等)。即使幾乎100%的最終WAR文件是相同的,它也能正常工作。

你也試過TomCat虛擬嗎?

+0

你好湯姆,謝謝你的回覆。 讓我直截了當: 您將所有代碼大部分移入單獨的插件,並且此插件被所有其他(儘管類似)項目包含在內? Tomcat vhost: 這不是太晚了嗎? – 2012-07-09 14:35:49

+0

第一部分:是的,正確的,我把所有的代碼移動到插件,然後創建單獨的應用程序與這個插件安裝,不同的只是數據庫配置(這是一個CMS應用程序......以清除;-)) 第二部分:好吧,如果你願意,你可以使用Apache和TomCat虛擬主機,這不是一個技術問題。但是對於TomCat中的虛擬主機,我想知道在將代碼移動到插件之前,現在是否可以幫助解決您的問題。 – 2012-07-09 15:23:32

0

我已經能夠將兩個幾乎完全相同的grails 1.3.7應用程序部署到相同的tomcat 7實例中,沒有任何問題。第二個應用程序基本上是第一個應用程序的克隆版,只對少數幾個源文件稍作修改。每個應用程序都有不同的WAR名稱(看起來您已經這樣做了),並且我還確保Config.groovy中的grails.app.context對於每個應用程序都不相同。我相信tomcat在某些早期版本的WAR文件名中有下劃線的一些問題,但我不知道它是否仍然適用於更新版本。嘗試使用不帶下劃線的不同WAR名稱,並編輯grails.app.context進行匹配。

+0

謝謝。我會嘗試重命名WAR並改變上下文。 也許我也可以嘗試使用Tomcat 7進行測試。 – 2012-07-11 10:19:47

0

結賬tomcat manager application。它有一個重新加載選項,可以解決你的問題。

一些公司禁用管理器(tomcat發行版附帶的附加webapp)。我瞭解安全問題,但這可能是地址,經理肯定會簡化應用程序部署。

+0

由於我們通過Hudson/Jenkins使用自動部署,因此經理不會幫助我們。 但無論如何。 – 2012-07-11 10:20:39

相關問題