Necesito una forma de especificar dinámicamente la unidad de persistencia en un EJB.Nombre de la unidad de persistencia dinámica JPA
ejemplo simplificado:
Tengo una aplicación utilizando múltiples bases de datos como almacenes de datos. Cada uno de los almacenes de datos es estructuralmente el mismo. Según el cliente que se conecte a la aplicación, necesito acceder a los datos del un almacén de datos específico.
Por lo tanto, me gustaría utilizar el mismo EJB para que la lógica de negocios no esté duplicada, , pero solo seleccione la unidad de persistencia correcta en función del cliente.
Hasta ahora, solo he inyectado directamente el administrador de entidades con el nombre de unidad de persistencia codificado. ¿Hay alguna manera de inyectar dinámicamente el administrador de entidades con la unidad de persistencia requerida adjunta al EJB? Además, ¿las unidades de persistencia se pueden agregar dinámicamente durante el tiempo de ejecución? Actualmente, tengo que especificar la unidad de persistencia en el archivo persistence.xml. Idealmente, me gustaría crear pools en el servidor jdbc/db1, jdbc/db2, etc., según se requiera, mientras el sistema se está ejecutando. A continuación, solo agréguelos a la base de datos central del cliente y vincúlela a un cliente, de modo que cuando el cliente se conecte, verifique el nombre del grupo y lo use cuando llame al EJB para obtener la unidad de persistencia.
Todavía soy nuevo en el desarrollo de Java EE. Cualquier ayuda sería muy apreciada.
Esto es casi lo que necesito, pero aún tengo que definir cada unidad de persistencia por adelantado en SharedEntityManagerFactory. Me hubiera gustado poder agregarlos dinámicamente para que no se requieran cambios de código y no se requiera una nueva implementación. Simplemente puedo guardar los detalles de la unidad de persistencia en la base de datos principal y vincularla con el cliente cuando sea necesario. Pero esto ya es mucho mejor que implementar cada almacén de datos como un servicio web independiente. Mucho menos sobrecarga. El servicio web tiene la ventaja adicional de poder almacenar la URL en db y usarla dinámicamente. Tendré que subir las opciones. – likenoother