Data Sources属性honor global transactions 的作用
该属性在创建数据源时设置,一旦设置便不能更改。用来控制数据源支持的事务类型。如果准备使用XA协议来实现分布式事务和两阶段提交,他的值必须为TRUE。在以下情况下,必须启用HONOR GLABAL TRANSACTIONS属性:
应用程序使用JTA服务。
应用程序使用EJB容器管理事务。
应用程序使用分布式事务,比如在单个事务的作用域内更新多个资源管理器。
Connection con = null;
try {
Hashtable env = new Hashtable();
env.put(InitialContext.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
env.put(InitialContext.PROVIDER_URL,"t3://localhost:7001");
// T3 是 BEA 的专用协议。
env.put(InitialContext.SECURITY_PRINCIPAL,"weblogic");
//这是weblogic中的用户帐号和密码,可以不填,则默认为guest
env.put(InitialContext.SECURITY_CREDENTIALS,"weblogic");
InitialContext ctx = new InitialContext(env);
System.err.println("1111111111111111");
ds = (DataSource)ctx.lookup("MySQLDataSource");
System.err.println("2222222222222222");
con = ds.getConnection();
System.err.println("3333333333333333");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
//在这里释放资源,如连接、结果集等,不要在finaly中放多于一个的close语句,因为如出现异常的话,会导致接下来的close语句无法执行。要放多个的话最好按下面的方法放置;
If(con!=null){
Try{
con.close();
ctx.close():
}catch(Exception e){
}
}
}
。建立事务。
Context ctx = null;
try {
ctx = new InitialContext();
Transaction tr = (Transaction)ctx.lookup("javax.transaction.UserTransaction");
} catch (Exception e) {
// TODO: handle exception
}
。启动事务。
tr.begin();
这样,任何使用数据库的操作都在事务的作用域之内。包括直接的JDBC调用,以及其他依靠JDBC的服务,包括EJB和JMS
。启用horno global transactions,定位一个DataSource
DataSource ds = (DataSource)ctx.lookup("mydatasource");
。建立一个数据库连接
Connection con = ds.getConnection();
。执行资源操作
。关闭连接
。完成事务
驱动程序:com.microsoft.sqlserver.jdbc.SQLServerDriver
url:jdbc:sqlserver://localhost:端口号 //若不加端口号则默认端口号为1433
Inactive Connection Timeout:保留的非活动连接上的秒数,超过此时间 WebLogic Server 将回收此连接并将其释放回连接缓冲池。