Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter");

一般情况下,intial.lookup("")中的参数就是你的JNDI名称。但是用的应用服务器,是把JNDI名放到java:comp/env/ejb/后面的。两种方式都没有错。比如: TomCat5.0中使用的是Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter"); WebLogic6.1中使用的是: Object objref = initial.lookup("HelloHome");

InitialContext的构造方法主要是准备JNDI的访问环境,如果不加参数,那就意味着是用本地匿名访问,也就是说,用户角色是匿名,ctx.PROVIDER_URL是LOCALHOST 所以,对于本地测试(并且JNDI资源没有设置安全属性)这两段代码没有区别,如果要访问远程的JNDI资源,就必须用饱含JNDI环境参数Hashtable初始化InitialContext。

必要的环境参数如: Context.INITIAL_CONTEXT_FACTORY//连接工厂 Context.PROVIDER_URL//访问连接 Context.SECURITY_PRINCIPAL//安全用户 Context.SECURITY_CREDENTIALS//用户密码

EJBLocalHome->本地主接口,负责控制Bean的整个生命周期,另外,可以看作是 生成Bean引用的 “工厂“类。

EJBLocalObject->本地组件接口,定义Bean要向客户提供的业务方法的签名。

本地接口是一种轻量级代理,语法更简单(直接类型转换,不需要narrow),

开销更小,速度更快。规范说可以在同一JVM内使用,我只在同一个EJB包内用过。 EJBLocalHome+EJBLocalObject   vs   EJBHome+EJBObject:     前一对不是远程调用,省时省力    Home   vs   Object:     前者是Factory模式,用来生成后者;后者是proxy模式,用来暴露商业逻辑

InitialContext context = new InitialContext();           Object ref = context.lookup(JNDIname);           accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);       ejbObject = accHome.create();     上面即是ejb实例的一个很常见的创建过程   理解如下:      上面的创建过程是通过远程接口创建ejb实例的过程:即先通过JNDIname找到ejb本地接 口的一个实例,然后再通过本地接口的实例创建ejb实例,PortableRemoteObject.narrow(ref,AccountHome.class); 实际上是一个强制转换,由于是远程强制转换,所以要用PortableRemoteObject.narrow()方法。

// 创建一个JNDI naming contest            Context initial = new InitialContext();                       // 从JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称) //         Object objref = initial.lookup("java:comp/env/ejb/ConverterEJB");            Object objref = initial.lookup("MyConverter");                       // 通过objref 得到ConverterHome 本地接口            ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(                    objref, ConverterHome.class);                       // 再由Home 接口的create 方法来创建一个服务器上的EJB实例            Converter currencyConverter = home.create();                       // 调用EJB 中的方法            代码省略

InitialContext与lookup的更多相关文章

  1. InitialContext和lookup

    http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialContext() ...

  2. InitialContext和lookup(转)

    原文地址:http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialCont ...

  3. Jboss7.1 local EJB lookup problem

    We are trying to lookup for an Local EJB in JBoss7.1, but we get an ClassCast Exception. This local ...

  4. Class loading in JBoss AS 7--官方文档

    Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...

  5. 浅谈JNDI的使用

    原文:http://www.weicoop.com/web/article/52.html 关于什么是JNDI的概念这里不做解释,本文作为初学者根据所了解到内容做些总结,主要内容如下: 1.JNDI使 ...

  6. JNDI support differences between Tibco EMS and ActiveMQ

    Introduction Recently our team was working on Veracity Quick Start sprint, when I was trying to migr ...

  7. 再说JNDI

    说到JNDI,即熟悉又陌生,熟悉在常常使用,如EJB3.0中的@EJB注入,底层实现即是JNDI的方式:喜闻乐见的: Context ctx=new InitialContext(); Object ...

  8. java_web学习(12)JDBC

    数据持久化       持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的 ...

  9. Java命名和目录接口——JNDI

    JNDI即Java命名和目录接口(JavaNaming and Directory Interface),它属于J2EE规范范畴,是J2EE的核心技术之一,提供了一组接口.类和关于命名空间的概念.JD ...

随机推荐

  1. python在三引号中使用变量

  2. Broken robot

    题意: 要在$nm$的矩阵中从 $(i,j)$ 处移动到第 $n$ 行,每次移动可在不动.左移一格.右移一格.下移一格 4 种选择中等概率随机选一种,但移动不能超出矩阵.求移动次数的期望,最少保留4位 ...

  3. UVa 557 Burger (概率+递推)

    题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先 ...

  4. ASP.NET学习笔记(一)相关概念

    ASP.NET 是一个开发框架,用于通过 HTML.CSS.JavaScript 以及服务器脚本来构建网页和网站. ASP.NET 支持三种开发模式: Web Pages MVC Web Forms ...

  5. C# sbyte[]转byte[]

    http://stackoverflow.com/questions/2995639/sbyte-vs-byte-using-methodssbyte[] orig = ... byte[] arr ...

  6. 3DMAX 3场景制作

    1 模型制作 2 UVW贴图展开 1 打开材质编辑器,给模型一个材质(以后应该以这个材质生成uvw展开,进而生成贴图,贴图绘制完毕后,再贴回这个材质中,就完成了给模型加贴图的操作) 2 在编辑面板中添 ...

  7. P5137 polynomial(分治)

    传送门 神仙--这题有毒-- 一直在那里考虑没有逆元怎么办然后考虑解exgcd巴拉巴拉 最后只好看题解了 而且这题龟速乘都不行--得用代码里那种叫人半懂不懂的方式取模-- //minamoto #in ...

  8. 2019年最新总结,从程序员到CTO,从专业走向卓越,大牛分享文档pdf与PPT整理

    整理大牛分享文档如下,持续更新一线开发架构,技术文档 github链接 网易蜂巢公有容器云架构之路 新浪微博redis优化历程 微博Cache架构设计实践 Go在大数据开发中的经验总结 基于Go构建滴 ...

  9. mysql之SQL入门与提升(四)——终结篇,函数

    一.SQL Aggregate (聚合)函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. AVG() - 返回平均值 COUNT() - 返回行数 FIRST() - 返回 ...

  10. 对单片机C语言的一些误用和总结

    在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了.我们是不是在写程序的时候错误很多就算编译通过了也达不到 ...