动态切换JPA 2.1数据源

时间:2015-09-23 22:30:41

标签: dynamic datasource persistence.xml jpa-2.1

我正在使用jpa 2.1开发持久层。

多租户是我的应用程序的要求所以我需要能够在运行时动态地更改我的数据源。

从我在很多帖子中看到的,我试图用这种方式:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("idelivery"); 
EntityManager em = emf.createEntityManager();

和Persistence属性由以下行设置:

Properties properties = new Properties(); 
properties.put ("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");

properties.put(“javax.persistence.provider”,“org.hibernate.jpa.HibernatePersistenceProvider”);     properties.put(“javax.persistence.transactionType”,“JTA”);     properties.put(“javax.persistence.jtaDataSource”,dataSourcePath);

但是现在我想用UserTransaction管理器来处理复杂的事务。

所以我写了这段代码:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("idelivery"); 
EntityManager em = emf.createEntityManager();
MyEntity exUser= new MyEntity();
try{
    Context context = new InitialContext();
    UserTransaction userTransaction = (UserTransaction)context.lookup("java:comp/UserTransaction");
    userTransaction.begin();
    em.persist(exUser);
    userTransaction.commit();

但我得到了这个例外:

  

org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus()

中的java.lang.NullPointerException

我正在研究WildFly9。

0 个答案:

没有答案