如果我在Tomcat中两次部署相同的Grails应用程序(即myApplication_first.war,myApplication_second.war),则Tomcat无法部署WAR文件,可重现。 它抱怨类XYZ已经存在于TEMP文件夹中(由于之前的部署,这是真的)。 因此,更改全局Tomcat TEMP文件夹没有任何意义,因为两个项目无论如何都会再次使用相同的文件夹。
我一般都知道如何部署应用程序两次,但不是在Grails上下文中,因为它已经管理了很多东西。
有没有办法实现这个计划?
我们使用Grails版本1.3.7。
我搜索了很多可能的解决方案,但没有一个符合我的需求。
我想到的一种方法,但对我来说似乎有点奇怪,就是在部署期间动态更改所有类的包(使用ANT或s.th.)。这样他们就不会在Tomcat TEMP文件夹中发生碰撞。 这可能是一个解决方案吗? 它是否有可能以优雅的方式出现?
亲切的问候, 克里斯托弗
答案 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)。我理解安全问题,但这可以是地址,管理员肯定会简化应用程序部署。