[原创]JNDI/JTA_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3768 | 回复: 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.设置 InitialContext的 JNDI 环境属性。

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

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

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

对嵌套事务的支持不是必须的。如果调用线程的上下文已经与事务关联,并且事务管理器的实现并不支持嵌套的事务,UserTransaction的begin方法调用时将抛出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
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论