0

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

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

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

我们使用 Grails 版本 1.3.7。

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

  • 在多个 Tomcat 实例上部署
  • 仅部署一个应用程序并使用一些唯一标识符来识别提供单个数据源和内容的强制/客户端。(请参阅在 tomcat 上多次部署相同的应用程序
  • 用另一个应用程序服务器替换 Tomcat

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

亲切的问候,克里斯托弗

4

3 回答 3

0

Checkout the tomcat manager application. It has a reload option that might solve your issue.

Some companies disable the manager (additional webapp that comes with the tomcat distribution). I understand the security concerns, but this can be addresses, the manager definately simplifies app deployment.

于 2012-07-09T21:53:12.873 回答
0

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

于 2012-07-09T18:32:25.893 回答
0

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

您是否也尝试过 TomCat 虚拟主机?

于 2012-07-09T13:22:35.877 回答