我们正在使用 Play 2.1.1 及其内置的 JPA 集成(JPA.em() 等)。
- 我们如何动态更改 db.pass 属性?Play.application().configuration() 从 Play 2.1 开始似乎是不可变的。(或者我们至少不知道突变器)
- 如果我们能够更改 db.pass,我们如何重新加载 DB 配置以便 JPA.em() 使用新密码返回 EntityManager?
我们试图避免的是必须使用 EntityManagerFactory 重新创建 EntityManager。我们希望继续让 Play 在 JPA 助手类中管理它。
背景
系统具有用于在本地运行的默认数据库配置。部署到服务器时,使用以下脚本在正在运行的应用程序上动态设置数据库密码:
#!/bin/bash
stty -echo
read -p "Password: " PASS
stty echo
curl -k https://127.0.0.1:8443/someUrl/pwd --data "password=$PASS"
应用程序接收此数据,然后重新创建 Hibernate SessionFactory。我们的新 Play 应用将需要执行类似的操作。