[本站首页] [管理页面] [写新日志] [退出]

朝为田舍郎,暮登天子堂,将相本无种,男儿当自强。
首页(178) Hibernate(10) JAVA(19) Web(15) Struts(7) 口水(9) Ides(18) 其它(51) AJAX(6) database(29) 
Blog信息

blog名称:四裤全输的小窝~~
日志总数:178
评论数量:699
留言数量:198
访问次数:1153641
建立时间:2005年10月29日

Blog内搜索



日志更新

谷歌地图定位偏移解决方法
【转】利用Windows内置的命令作端口
WIN2003服务器安全加固方案
[转]sql server 日期比较、日
MediaCoder 一般参数设置
[转]VMware中创建共享磁盘阵列的方
缓解vss共享文件夹的安全隐患问题(转)
Delphi 中调用JavaScript
微软的官方方法:延长Windows Se
cxGrid 过滤 排序后 取选中记录的

最新评论

回复:谷歌地图定位偏移解决方法
回复:谷歌地图定位偏移解决方法
回复:WIN2003服务器安全加固方案
回复:cxGrid 过滤 排序后 取选中
回复:TreeView 父节点 子节点 
回复:[转]Oracle Instead
回复:DWR 官方下载地址
ugg  boots
回复:cxGrid 过滤 排序后 取选中
回复:DWR 官方下载地址

友情链接

biglin's Blog
NoisyRam's Blog
Stone's Blog
Kevin 的小家
『知』治通鉴

留言板




[JAVA]weblogic server 中的事务
文章收藏,  网上资源,  软件技术,  电脑与网络 四裤全输 发表于 2006/6/10 13:40:44

转自:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=123&threadID=26917&messageID=164972 一) weblogic server 中的事务:        j2ee简化了分布式事务管理应用程序的编写。j2ee包括了两套规范,用来支持分布式的事务,一种是java Transaction(JTA),另一种是java Transaction Service(JTS)。JTA是一种高层的、与实现无关的、与协议无关的API,应用程序和应用服务器可以使用JTA访问事务!    JTA由三部分组成:高层的应用事务划分接口(供事务客户使用)、高层的事务管理器接口(供应用服务器使用)和X/OpenXA协议的标准java映射(供事务性资源管理器使用)。          1、UserTransaction接口      javax.transaction.UserTransaction接口使得应用程序能够编程控制事务边界。这个接口可以有java客户端程序或者EJB来使用。          java客户客户端程序需要首先通过JNDI获得UserTransaction对象的引用, 然后使用该对象的方法完成事务的开始、提交或者回滚。代码如下:    java.uitl.Properties env=...    Context ctx=new InitialContext(env);    javax.transaction.UserTransaction userTran=(javax.transaction.UserTransaction)ctx.lookup("javax.transaction.UserTransaction");    userTran.commit()    try    {        userTran.commit();    }    catch(Exception e)    {       userTran.rollBack();       throw new Exception(....);    }          2、TransactionManager接口           应用服务器使用javax.transaction.TransactionManager接口代表受控的应用程序控制事务的边界。例如,EJB容器为事务性EJB组件管理事务状态。                   3、Transaction接口           使用Transaction接口可以执行与目标对象相关联的事务操作。           4、XAResource接口            javax.transaction.xa.XAResource接口是基于X/Open CAE规范(分布式事务处理:XA规范)工业标准XA接口的java映射。XAResource接口定义了分布式事务处理环境(DTR)中资源管理器和事务管理器之间是如何交互的。资源管理器使资源适配器实现了XAResource接口,将事务同事务资源联系起来,类似于关系数据库的一个连接。            5、Xid接口            javax.transaction.xa.Xid接口是X/Open事务标识符XID结构的java映射。这个接口由事务管理器和资源管理器使用,对于应用程序和应用服务器而言,这个接口是不可见的。二) Weblogic Server下的JTA开发实例:                 应用中采用Weblogic Server的JTA,包括7个基本步骤:建立事务,开始事务,找到数据源,建立数据库连接,执行与资源有关的操作,关闭连接,完成事务。           下面将详细介绍JTA开发的7个基本步骤,最后给出一个完整的实例(其实该实例比较简单,说说完整好听点而已哦……嘻嘻…………):                    1、 建立事务。             在Weblogic Server中实现JTA的第一步是创建一个UserTransaction类的实例。UserTransaction类可以控制事务并发线程的执行(这个最重要哦!!)。一个事务的并发线程可以是各种服务,如EJB、JMS和JDBC。可以通过JNDI检索UserTransaction类。示范代码如下:        Context ctx=new getInitialContext();    UserTransaction tx=(UserTransaction)ctx.lookup("javax.transaction.UserTransaction");       2、开始事务。       调用UserTransaction对象的begin()方法。例如:tx.begin()。     开始事务后,针对数据库的任何操作均处于这个事务的范围之内,包括JDBC调用及其他依赖于JDBC的服务,例如:EJB、JMS。       3、找到数据源。       找到事先建立好的Tx Data Source(支持事务的数据源)。此处必须使用TxDataSource:     javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("myTxDataSource");  (但是有些新的weblogic没有Tx Data Source单独这项建立的,其中的原因不用我来解析吧!!相信各位那么聪明因该知道是什么回事了吧!不明的再发帖上来,我另外解决!!)        4、建立数据连接        通过Tx Data Source 对象ds可以建立数据库连接:      javax.sql.Connection myConn=ds.getConnection();        5、执行与资源有关的操作。        例如建立语句对象,然后通过语句对象执行数据库操作。              6、关闭连接。        创建的连接在用完后必须关闭。         7、完成事务。        在事务提交或回滚之前,还可以创建来自同一连接池中的新的Connection对象,执行其他的JDBC调用,这个新的连接将与先前执行的事务处于同一事务范围。             一旦所有的工作都完成了,最后一步是决定提交还是回滚。三)  JTA开发实例:        1、启动数据库,利用SQL建立一个试验用的表emp。     create table emp(empname varchar(60),empid integer,job varchar(60));     insert into emp(empname empid job)values(‘liming’,1,‘sales’);      insert into emp(empname empid job)values(‘wangping’,1,‘manager’);            2、启动BEA Weblogic server                  3、启动JBuilder,增加一个class,代码如下:import java.sql.*;import javax.naming.*;import javax.sql.*;import java.util.Properties;import javax.transaction.*;public class MyDataSource433 {  public MyDataSource433() {  }  public static void main(String args[])  {    DataSource ds=null;    Context ctx=null;    Connection myConn=null;    UserTransaction tx=null;    try    {      ctx=getInitialContext();      //建立事务   tx=(UserTransaction)ctx.lookup("javax.transaction.UserTransaction");      tx.begin();      ds=(javax.sql.DataSource)ctx.lookup("myDataSource");    }catch(Exception e)    {      System.out.println("Init Error: "+e);    }    Statement myStatement =null;    ResultSet myResultSet=null;    try    {      myConn=ds.getConnection();      myStatement=myConn.createStatement();      myStatement.executeUpdate("insert into emp(empname,empid,job) values('John',10,'sales')");   //提交事务      tx.commit();      System.out.println("Success!");    }    catch(Exception e)    {      try      {     //错误回滚        tx.rollback();      }catch(Exception err)      {      }      System.out.println("Error message= "+ e.getMessage());    }    finally    {      try      {        if(myStatement!=null)        {          myStatement.close();        }        if(myConn!=null)        {          myConn.close();        }      }catch(SQLException e)      {        System.out.println("Error code = "+e.getErrorCode());        System.out.println("Error message = "+e.getMessage());      }    }  }  private static Context getInitialContext() throws Exception  {    String url="t3://localhost:7001";    String user="weblogic";    String password="weblogic";    Properties properties=null;    try    {      properties=new Properties();      properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");      properties.put(Context.PROVIDER_URL,url);      if(user!=null)      {        properties.put(Context.SECURITY_PRINCIPAL,user);        properties.put(Context.SECURITY_CREDENTIALS,password==null ? "" : password);      }      return new InitialContext(properties);    }catch(Exception e)    {      throw e;    }  }}


阅读全文(5705) | 回复(2) | 编辑 | 精华

回复:weblogic server 中的事务
文章收藏,  网上资源,  软件技术,  电脑与网络 ufo(游客)发表评论于2009/6/11 14:30:25

www.gm365.com上发布的web server软件UFO不会出现一个字节的内存泄漏和一个线程的不能回收,使用UFO做Web Server的好处是网站能做得很稳定,永远也不会自己down掉;UFO在托管机房丢包率很高、遭受Hacker攻击、互联网 骨干网被黑等恶劣的环境条件下仍然能很好地运行;UFO在对付Hacker方面(防Hacker弄down和Hacker抓取不该访问的资源)也有足 够措施。另外,UFO几乎不会进行垃圾回收,消耗CPU很少,在普通的PC Server上用UFO运行网站,平时CPU占用率<0.1%,最多时也不会超 过5%。您知道,JVM的垃圾回收会导致大量的运算,消耗很多CPU,从而导致Server的负载能力和响应速度下降。UFO在对象管理方面采 用了很好的机制和算法,做得很出色。用UFO运行网站,可以一直保证高负载能力,快速的响应速度和低CPU消耗。


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:weblogic server 中的事务
文章收藏,  网上资源,  软件技术,  电脑与网络 phongle发表评论于2009/1/4 15:33:17

好文一篇,实践过程中(Eclipse+wl-10)有少许体会,记在下面(实际上是方便自己找 hh) 使用Eclipse调试请注意: 1 Eclipse的JRE直接指向WL10的JRE 2 Eclipse相应工程的包应指向WL10的相关包 api.jar weblogic.jar 3 Eclispe的编译环境应指向WL的JRE 否则会出现错误 如IncompatibleClassChangeError PS:请关注配置参数: 代码中的WL相关参数:用户名、密码、登录方式、JNDI名称、服务器地址、端口等

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.336 second(s), page refreshed 144774882 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号