我有一个使用 Spring MVC 和 Spring Security 的应用程序。
应用程序项目有 ejbs 和 web 应用程序。
我有一个用户通用数据库和一个用户组数据库。
因此,当用户进行身份验证时,Spring Security 使用公共数据库来检查登录名/密码,并且当控制器调用 ejb 时,实体管理器连接到用户的组数据库。
我的目标是:即时创建用户/组及其关联的数据库。
例子 :
公共数据库localhost:3306 database_schema1包含
USERS
----------------------
| NAME | GROUP_ID |
----------------------
| Pierre | 1 |
| Paul | 1 |
| Jacques | 2 |
----------------------
GROUPS
------------------------------------------
| ID | URL | SCHEMA_NAME |
------------------------------------------
| 1 | localhost:3307 | database_schema1 |
| 2 | localhost:3308 | database_schema1 |
------------------------------------------
当 Pierre 进行身份验证时,主页会调用一个 ejb。这个 ejb 有一个实体管理器,它必须使用模式database_schema1连接到组 1 数据库localhost:3307
如果 Jacques 验证,它必须是组 2 数据库。
我该如何告诉实体经理使用我在构建项目时不知道的给定数据库?
我的意思是,我不想在我的 ejb 中使用 persistence.xml,而是根据经过身份验证的用户动态初始化实体管理器。
Persistence.createEntityManagerFactory() 会在这种情况下工作吗?如果是这样,这是最好的解决方案吗?