我试图为不同的人多次部署相同的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(或…使用您喜欢的脚本引擎)脚本遍历该配置文件和
- 修改源文件 中的配置
- 使用
ant
或maven
构建战争 - 部署到生产服务器
即时改进:
- 允许所有战争或简单的一些(id作为参数给出)的再生
- 使用一个临时目录来做所有的事情(从你的开发目录复制,但不要修改它)
- 和你需要的一切,我没有想到…
但是请记住,即使使用传统的方法(一个单一的战争,一个数据库),如果应用程序是按照这个目标设计的(仍然是传统的方式),每个用户只能看到自己的数据。