1 43 44 import java.sql.Connection ; 45 import java.sql.SQLException ; 46 import java.util.Properties ; 47 48 import javax.naming.InitialContext ; 49 import javax.sql.XAConnection ; 50 import javax.sql.XADataSource ; 51 import org.objectweb.jotm.Jotm; 52 import org.objectweb.transaction.jta.TMService; 53 54 import org.enhydra.jdbc.standard.StandardXADataSource; 55 56 57 62 public class DistDatabaseHelper { 63 64 private String password1; 65 private String password2; 66 private TMService jotm; 67 private XADataSource xads1; 68 private XADataSource xads2; 69 private String login1; 70 private String login2; 71 private static final String USER_TRANSACTION_JNDI_NAME = "UserTransaction"; 72 73 76 public DistDatabaseHelper(String database1, String database2) { 77 Properties props1 = new Properties (); 78 Properties props2 = new Properties (); 79 80 try { 81 props1.load(ClassLoader.getSystemResourceAsStream(database1 + ".properties")); 82 } catch (Exception e) { 83 System.out.println("no properties file found found for " + database1); 84 System.exit(1); 85 } 86 87 System.out.println("\n" + database1 + " configuration:"); 88 props1.list(System.out); 89 System.out.println("------------------------\n"); 90 91 login1 = props1.getProperty("login"); 92 password1 = props1.getProperty("password"); 93 94 try { 95 props2.load(ClassLoader.getSystemResourceAsStream(database2 + ".properties")); 96 } catch (Exception e) { 97 System.out.println("no properties file found found for " + database2); 98 System.exit(1); 99 } 100 101 System.out.println("\n" + database2 + " configuration:"); 102 props2.list(System.out); 103 System.out.println("------------------------\n"); 104 105 login2 = props2.getProperty("login"); 106 password2 = props2.getProperty("password"); 107 108 try { 110 jotm = new Jotm(true, false); 112 InitialContext ictx = new InitialContext (); 113 ictx.rebind(USER_TRANSACTION_JNDI_NAME, jotm.getUserTransaction()); 114 } catch (Exception e) { 115 e.printStackTrace(); 116 System.exit(1); 117 } 118 119 xads1 = new StandardXADataSource(); 120 try { 121 ((StandardXADataSource) xads1).setDriverName(props1.getProperty("driver")); 122 ((StandardXADataSource) xads1).setUrl(props1.getProperty("url")); 123 ((StandardXADataSource) xads1).setTransactionManager(jotm.getTransactionManager()); 124 } catch (Exception e) { 125 e.printStackTrace(); 126 System.exit(1); 127 } 128 129 xads2 = new StandardXADataSource(); 130 try { 131 ((StandardXADataSource) xads2).setDriverName(props2.getProperty("driver")); 132 ((StandardXADataSource) xads2).setUrl(props2.getProperty("url")); 133 ((StandardXADataSource) xads2).setTransactionManager(jotm.getTransactionManager()); 134 } catch (Exception e) { 135 e.printStackTrace(); 136 System.exit(1); 137 } 138 } 139 140 public Connection getConnection1() throws SQLException { 141 XAConnection xaconn = xads1.getXAConnection(login1, password1); 142 return xaconn.getConnection(); 143 } 144 145 public Connection getConnection2() throws SQLException { 146 XAConnection xaconn = xads2.getXAConnection(login2, password2); 147 return xaconn.getConnection(); 148 } 149 150 153 public void stop() { 154 xads1 = null; 155 xads2 = null; 156 157 try { 158 InitialContext ictx = new InitialContext (); 159 ictx.unbind(USER_TRANSACTION_JNDI_NAME); 160 } catch (Exception e) { 161 e.printStackTrace(); 162 } 163 164 jotm.stop(); 165 jotm = null; 166 } 167 168 } 169 170 | Popular Tags |