已定义的持久性单元上的动态JTA数据源

时间:2018-08-06 16:02:14

标签: java jpa persistence datasource jta

伙计们,我现在面临一个大问题,我有一个Services.ear项目,主要服务于3个数据库模式,要点是我的模式之一将被替换N次,因为这些模式中的每个模式都将特定有关“数据世界”的信息。与要复制的架构相比,它具有相同的结构,只是它们之间的数据会改变。我需要保证的是,此“ Services.ear”将服务比我要复制的N个模式。

为解决这个问题,我在每次发送请求时都先在服务器上创建一个Cookie,然后每次与该架构进行交互时都向服务器发送该Cookie,其中包含在我的应用程序服务器中创建的de JTA数据源名称。

我创建了此类,以便在每个请求上注入JTA数据源:

  

@无状态

public class AdapterDatasource {

public EntityManager adapterEntityManager(String dataSource) {
    Map props = new HashMap();
    System.out.println("set " + dataSource);
    props.put(PersistenceUnitProperties.JTA_DATASOURCE, dataSource);
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistenceUnitName", props);
    return emf.createEntityManager();
}

}

我在一个已经定义的持久性单元中设置了一个新的JTA数据源,其中包含此Schema的所有类。

它实际上工作良好,并且具有开发和测试环境。接下来的一点是,当它处于生产环境中时,它的性能非常差,我面临每个请求5到8秒的延迟。

我已经阅读了很多有关如何执行此操作的信息,但是我没有很好的实现方法。

我在考虑是否有可能在

中设置新道具
  

@PersistenceContext('pUnitName',props)

或我能做的一切以使其具有良好的性能和响应功能。

我非常感谢每一个建议或可能的解决方案,以实现并使其完美运行

非常感谢您。

PD:我的目标是设置每个客户端发送的相应JTA数据源,并保存-检索关联模式连接到接收到的JTA数据源连接的数据

0 个答案:

没有答案