ywbanm 发表于 2013-1-30 01:38:14

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]
查看完整版本: EJB PostgreSQL 多数据源 Transaction