Glassfish部署不同的战争实例覆盖前者



我试图为不同的人多次部署相同的war文件,我们决定避免多租户,因为每个客户端都希望自己的数据库和应用程序与其他客户端分开。

到目前为止,我们所做的是在glassfish管理面板中创建一个单独的连接池和JDBC资源,编辑persistence.xml并将persistence-unit更新为我们自己的持久性。

然后在Netbeans中,我们创建一个自定义war,进入properties→build→packaging→war并设置不同的war文件名,然后我们编辑properties→build→run→context path→并设置我们的上下文名称,最后我们替换在web.xml中→我们的名称。

发生的事情是,有时我们部署的战争用不同的名字覆盖了以前的战争!

作为一种部署技术,这是相当罕见的,因为如果您必须更改应用程序中的某些内容(错误纠正,改进等),您将不得不手动重新部署所有的war,并冒着出错的风险。如果你认为你应该使用像python或ruby这样的脚本语言来自动化你的部署。

第一个反射:

  • 一个配置文件,每个实例包含一行及其所有参数
  • python或ruby(或…使用您喜欢的脚本引擎)脚本遍历该配置文件和
    • 修改源文件
    • 中的配置
    • 使用antmaven构建战争
    • 部署到生产服务器

即时改进:

  • 允许所有战争或简单的一些(id作为参数给出)的再生
  • 使用一个临时目录来做所有的事情(从你的开发目录复制,但不要修改它)
  • 和你需要的一切,我没有想到…

但是请记住,即使使用传统的方法(一个单一的战争,一个数据库),如果应用程序是按照这个目标设计的(仍然是传统的方式),每个用户只能看到自己的数据。

最新更新