ログインしたユーザーに応じてエンティティマネージャーを「生成」するシステムを構築しようとしています (マルチテナンシーの種類)。そのため、次のようなステートレス ejb を実装しました。
@Stateless
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class CustomEntityManagerFactory {
@PersistenceContext(unitName = "EM1")
private EntityManager em1;
@PersistenceContext(unitName = "EM2")
private EntityManager em2;
@Produces
@RequestScoped
public EntityManager getEntityManager() {
// check which entitymanager to return
}
}
entitymanager は次のように挿入されます。
@Stateless
public class EmployeeService {
@Inject
private EntityManager em;
...
}
このプロデューサは、(ステートレス ejb で) 拡張永続コンテキストを持たないエンティティ マネージャのみが必要である限り機能します。残念ながら、拡張永続コンテキストを必要とするステートフルな ejb もいくつかあります。この目的のために CDI プロデューサーを実装する方法はありますか、またはこのアプローチはトランザクションエンティティマネージャーを使用したステートレス ejb でのみ機能しますか?