创建参数化持久性单元 +运行时的 JTA 数据源(上下文相关)
我正在尝试编写一个 EJB3 无状态会话 Bean,它获取参数“customerCode”(字符串)。 根据这个“customerCode”,我想用(动态?)创建的 PersistenceUnit 创建一个 EntityManager (Persistence.createEntityManagerFactory...)。
我无法在 persistence.xml 中定义 PU,因为它的名称(和底层数据源)必须能够在运行时添加/删除(例如,部署属于特定客户代码的新数据源/持久性单元)。
我可以在 persistence.xml 中定义 PU,因为我提前知道所有 customerCode,但是如果数据源 XML 文件丢失,我就无法正确部署 EAR,因为容器 (JBOSS) 会查找匹配的数据源。
我能做些什么? 提前致谢!
i'm trying to write an EJB3 Stateless Session Bean which gets the parameter "customerCode" (String).
Dependent on this "customerCode" i want to create an EntityManager (Persistence.createEntityManagerFactory...) with a (dynamically?) created PersistenceUnit.
I can not define the PU in the persistence.xml, because it's name (and underlying datasource) must be able to be added/removed at runtime (e.g. deploying a new datasource/persistence unit that belongs to a specific customer code).
I could define the PUs in the persistence.xml, because i know all the customerCodes in advance, but if the datasource XML file is missing, i can not deploy my EAR correctly, because the container (JBOSS) looks for a matching datasource.
what can i do?
thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,你可以做到这一点。下面是粗剪。
显然,在调用 populateEmfMap 之前,您需要填充这个 customerCodes 列表。
您可以通过键从 Hasmap 获取它。
Yes you can do this.A rough cut is below.
You need to populate this list of customerCodes obviously before calling populateEmfMap
You can just get it from the Hasmap by key.