básicamente, lo que quiero hacer es asignar el atributo 'unitName' de @PersistenceContext con un valor que voy a obtener de la sesión en tiempo de ejecución.dinámica atributo @PersistenceContext unitName de EntityManager basada en contenedores
en detalles;
mi aplicación será una aplicación SaaS y tendré bases de datos separadas para cada inquilino diferente. Estoy utilizando Glassfishv3 y la gestión de las entidades basado en contenedores por lo que no obtengo ninguna instancia de EntityManagerFactory explícitamente. Todo lo que estoy haciendo para crear un administrador de entidades es;
@PersistenceContext(unitName = "DBNAME")
private EntityManager entityManager;
Necesito pasar el atributo unitName según el usuario actual. no debería estar codificado.
He actualizado EclipseLink 2.3, pero todos los ejemplos son la creación de una instancia de EMF que puede pasar Mapa propiedad como
Map memberProps = new HashMap();
memberProps.put("memberPu1", props1);
memberProps.put("memberPu2", props2);
Map props = new HashMap();
props.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
props.put("eclipselink.composite-unit.properties", memberProps);
EntityManager em = emf.createEntityManager(props);
poco probable en mi aplicación, contenedor hace ese trabajo por lo que no estoy siendo capaz de hacer esto
EntityManager em = emf.createEntityManager(props);
aunque tengo todas las unidades de persistencia y clases en mi persistence.xml mediante el uso de las definiciones JNDI, no estoy siendo capaz de t O decirle servidor de aplicaciones, que DB (unidad de persistencia) se debe utilizar en el momento
cualquier ayuda se agradece
Esta pregunta me ayudó a encontrar una solución para un caso similar. Creo que puede ser util: http://stackoverflow.com/questions/5104185/how-to-inject-persistence-context-to-different-data-source-programmatically – Monnie