[原创]JNDI/JTA_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2488 | 回复: 0   主题: [原创]JNDI/JTA        下一篇 
feng.gao
注册用户
等级:中士
经验:239
发帖:15
精华:0
注册:1970-1-1
状态:离线
发送短消息息给feng.gao 加好友    发送短消息息给feng.gao 发消息
发表于: IP:您无权察看 2017-5-10 18:09:57 | [全部帖] [楼主帖] 楼主

JNDI

Java 命名和目录接口(Java Naming and Directory Interface

WebLogic Server JNDI

JNDI WebLogic Server 实现提供下列方法:

允许客户端访问 WebLogic Server 命名服务

令对象在 WebLogic 名称空间中可用

WebLogic 名称空间检索对象

 

使用 WebLogic JNDI Java 客户端连接到单个服务器

WebLogic Server JNDI 服务提供程序接口(Service Provider Interface,简称 SPI)提供一个允许远程 Java 客户端连接到 WebLogic Server InitialContext 实现。客户端可以指定标识特定 WebLogic Server 部署的标准 JNDI 环境属性,以及用于登录 WebLogic Server 的相关连接属性。

要与 WebLogic Server 交互,Java 客户端必须能够获取某个远程对象的对象引用,并能够调用对该对象的操作。要完成此操作,客户端应用程序代码必须执行下列步骤:

1.设置 InitialContextJNDI 环境属性。

Context ctx = null;

  Hashtable ht = new Hashtable();

  ht.put(Context.INITIAL_CONTEXT_FACTORY,

         "weblogic.jndi.WLInitialContextFactory");

  ht.put(Context.PROVIDER_URL,

         "t3://localhost:7001");

 

  try {

    ctx = new InitialContext(ht);

    // 使用程序中的上下文

  }

  catch (NamingException e) {

    // 打印异常

  }

  finally {

    try {ctx.close();}

    catch (Exception e) {

      // 打印异常

    }

  }

2.使用上下文查找 WebLogic Server 名称空间中的已命名对象。

try {

    ServiceBean bean = (ServiceBean)ctx.lookup("ejb.serviceBean");

  }catch (NameNotFoundException e) {

    // 绑定不存在

  }catch (NamingException e) {

    // 打印异常

  }

3.使用已命名对象来获取远程对象的引用,并调用对远程对象的操作。

bean.invoke();

4.关闭上下文。

try {

ctx.close();

} catch () {

//打印异常

}

JTA

Java事务APIJava Transaction API,简称JTA ) 是一个Java企业版 的应用程序接口,在Java环境中,允许完成跨越多个XA资源的分布式事务。

JTA是以X/Open XA体系结构为基础设计的,但他定义了两种不同的事务边界划分的API。应用服务器,EJB服务器,与应用组件区别对待。JTA提供了一个接口,javax.transaction.TransactionManager,这是供应用服务器自己进行开始,提交或回滚事务使用悳,同时还提供了另外一个接口javax.transaction.UserTransaction,这是供一般客户代码,如Java Servlet或是EJB管理事务使用的

UserTransactionbegin方法开始一个全局事务,并将该事务与调用线程关联。事务到线程的管理是由事务管理器完成的,对应用程序透明的。

对嵌套事务的支持不是必须的。如果调用线程的上下文已经与事务关联,并且事务管理器的实现并不支持嵌套的事务,UserTransactionbegin方法调用时将抛出NotSupportedException

Hashtable env=new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");

        env.put(Context.PROVIDER_URL, "t3://localhost:7001");

        try {

Context ctx = new InitialContext(env);

Object obj = ctx.lookup("javax.transaction.UserTransaction");

UserTransaction ut = (UserTransaction) obj;

ut.begin();

//数据库操作

ut.commit();

} catch (NamingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NotSupportedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SystemException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SecurityException | IllegalStateException | RollbackException | HeuristicMixedException

| HeuristicRollbackException e) {

// TODO Auto-generated catch block

e.printStackTrace();





赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论