如何在Tomcat中两次部署相同的Grails应用程序?

时间:2012-07-09 11:19:39

标签: tomcat grails deployment war

如果我在Tomcat中两次部署相同的Grails应用程序(即myApplication_first.war,myApplication_second.war),则Tomcat无法部署WAR文件,可重现。 它抱怨类XYZ已经存在于TEMP文件夹中(由于之前的部署,这是真的)。 因此,更改全局Tomcat TEMP文件夹没有任何意义,因为两个项目无论如何都会再次使用相同的文件夹。

我一般都知道如何部署应用程序两次,但不是在Grails上下文中,因为它已经管理了很多东西。

有没有办法实现这个计划?

我们使用Grails版本1.3.7。

我搜索了很多可能的解决方案,但没有一个符合我的需求。

  • 在多个Tomcat实例上部署
  • 仅部署一个应用程序并使用一些唯一标识符来标识用于提供单个数据源和内容的强制/客户端。 (见deploy the same application multiple times on tomcat
  • 用其他应用程序服务器替换Tomcat

我想到的一种方法,但对我来说似乎有点奇怪,就是在部署期间动态更改所有类的包(使用ANT或s.th.)。这样他们就不会在Tomcat TEMP文件夹中发生碰撞。 这可能是一个解决方案吗? 它是否有可能以优雅的方式出现?

亲切的问候, 克里斯托弗

3 个答案:

答案 0 :(得分:0)

我有类似的情况,我的解决方案是将应用程序“转换”为grails插件,然后创建更多(我有6个)应用程序,该应用程序使用此插件并在每个应用程序中调整配置(DataSource等)。即使最近的WAR文件中有近100%是相同的,它也能正常工作。

您是否也尝试过TomCat vhosting?

答案 1 :(得分:0)

我已经能够将两个几乎相同的grails 1.3.7应用程序部署到同一个tomcat 7实例上而没有任何问题。第二个应用程序基本上是第一个应用程序的克隆,只对一些源文件进行了一些小的更改。每个应用程序都有一个不同的WAR名称(看起来你已经在做了),我还确保Config.groovy中的grails.app.context对于每个应用程序都是不同的。我相信tomcat在某些早期版本的WAR文件名中有下划线的问题,但我不知道它是否仍然是更新版本的情况。尝试使用不带下划线的不同WAR名称,并编辑grails.app.context以匹配。

答案 2 :(得分:0)

结帐tomcat manager application。它有一个可以解决您问题的重新加载选项。

有些公司会禁用该管理器(tomcat发行版附带的其他webapp)。我理解安全问题,但这可以是地址,管理员肯定会简化应用程序部署。