EJB PostgreSQL 多数据源 Transaction
终于有机会弄这个了~~postgre-ds.xml
<datasources> <xa-datasource> <jndi-name>PostgresDS1</jndi-name> <track-connection-by-tx/> <!-- isSameRM-override-value>false</isSameRM-override-value --> <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> <xa-datasource-property name="ServerName">172.25.73.253</xa-datasource-property> <xa-datasource-property name="PortNumber">5432</xa-datasource-property> <xa-datasource-property name="DatabaseName">eo_test</xa-datasource-property> <user-name>postgres</user-name> <password>11111</password> </xa-datasource> <xa-datasource> <jndi-name>PostgresDS2</jndi-name> <track-connection-by-tx/> <!-- isSameRM-override-value>false</isSameRM-override-value --> <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> <xa-datasource-property name="ServerName">172.25.73.254</xa-datasource-property> <xa-datasource-property name="PortNumber">5432</xa-datasource-property> <xa-datasource-property name="DatabaseName">eo_test</xa-datasource-property> <user-name>postgres</user-name> <password>11111</password> </xa-datasource> </datasources>
persistence.xml
<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="manager1"> <jta-data-source>java:/PostgresDS1</jta-data-source> <properties> <property name="jboss.entity.manager.jndi.name" value="java:/Manager1"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/Manager1Factory"/><property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> <persistence-unit name="manager2"> <jta-data-source>java:/PostgresDS2</jta-data-source> <properties> <property name="jboss.entity.manager.jndi.name" value="java:/Manager2"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/Manager2Factory"/><property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit></persistence>
@Stateless@Local( { UserService.class })@Remote( { UserService.class })@TransactionManagement(TransactionManagementType.BEAN)public class UserServiceImpl implements UserService {@PersistenceContext(unitName="manager1") EntityManager em1;@PersistenceContext(unitName="manager2") EntityManager em2;@Resource UserTransaction ut;public void loginUser(String loginId) throws EOException {UserBean userBean = null;UserBean userBean1 = null;try {userBean = new UserBean(...);userBean1 = new UserBean(...);ut.begin();em1.persist(userBean);em2.persist(userBean1);ut.commit();} catch (Exception e) {try {ut.rollback();} catch (Exceptione1) {e1.printStackTrace();} e.printStackTrace();}}
页:
[1]