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

时间:2014-06-17 09:18:37

标签: java java-ee glassfish

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

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

然后在Netbeans中我们创建了一个自定义战争进入属性→构建→打包→战争并设置不同的战争文件名,然后我们编辑属性→构建→运行→上下文路径→并设置我们的上下文名称,最后我们在web中替换.xml→我们的名字。

有时候我们部署的战争会覆盖一个名字不同的前战争! 我觉得我们几乎在那里,但错过了一个小细节。

1 个答案:

答案 0 :(得分:0)

作为一种部署技术,这种情况并不常见,因为如果您必须在应用程序中更改某些内容(错误更正,改进......),您将不得不手动重新部署所有战争,并存在错误风险。如果认为您应该使用像python或ruby这样的脚本语言来自动化部署。

第一反思:

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

立即改进:

  • 允许所有战争的再生或仅仅一些(作为参数给出的id)
  • 使用临时目录来执行所有这些操作(从dev目录复制,但不要修改它)
  • 以及你需要的一切,我没想到......

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