有关InitialContext()的困惑 <转>

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 中的方法
           代码省略

时间: 2024-12-18 15:36:13

有关InitialContext()的困惑 <转>的相关文章

bzoj2186【SDOI2008】沙拉公主的困惑

2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2363  Solved: 779 [Submit][Status][Discuss] Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量.现在,请你帮助沙拉公主解决这个问题,由于可能张

从HelloWorld启航——数据库连接字符串的困惑

程序员方阵 数据库连接字符串的困惑 数据库连接字符串的组成 驱动程序 ODBC OLE DB JDBC 比较 数据库链接字符串大全 SQL Server 2005 SQL Native Client ODBC Driver SQL Native Client OLE DB Provider SqlConnection NET MySQL MyODBC OLE DB OleDbConnection NET MySqlConnection NET Oracle ODBC OLE DB OleDbCo

周鸿祎:先做产品还是先谈情怀,这让我很困惑

问:要数中国创业型一号产品经理,应该是周鸿祎了吧. 周鸿祎:真不敢当.我最近也很困惑,三观也被颠倒了.过去我们谈什么都先谈产品,你要先根据用户需求做产品,在体验上做到极致,在产品体验基础之上才能谈情感认同或身份认同,才能到情怀,对吧?但最近很多人,人家先做营销,先做情感认同,完全倒过来了,粉丝就是产品,给用户什么产品反而不重要了.包括最近罗胖卖月饼,我就琢磨这是一次性的呢还是可持续的呢?比如锤子手机,第一次做产品有很多缺点,当把用户期望吊到很高以后,这些缺点靠情怀能克服吗? 问:今天互联网公司动

关于argv和strncpy()的困惑

遇到一个问题,命令行参数复制到字符串后打印出来的结果与直接打印命令行参数的结果不一致. 不清楚是哪里的问题. #include <stdio.h> #include <string.h> #define LEN 5 int main(int argc, char* argv[]) { char s1[LEN]; char s2[LEN]; for(int i = 0; i<LEN; i++) { s1[i] = '\0'; s2[i] = '\0'; } printf(&qu

JavaScript你所不知道的困惑(2)

困惑一: var obj1 = new Object(); var obj2 = obj1; obj1.name = "阳光小强"; alert(obj2.name); //输出结果:阳光小强 JavaScript中的5个基本类型:Undefined.Null.Boolean.Number和String都是按值访问的,可以操作保存在变量中的实际的值,内存空间如下: var num1 = 5; var num2 = num1; 引用类型的值是保存在内存中的对象,JavaScript不允许

JavaScript你所不知道的困惑(1)

困惑一: 先看一个例子: function test(){ message = "hi"; } test(); alert(message); 会输出字符串"hi" 在函数内部使用var定义的变量是局部变量,省略var操作符的变量是全局变量. 困惑二: alert(undefined == null) 结果是"true" 我们知道在js中分为基本类型和引用类型,基本类型包括number.string.boolean.undefined.null.

WebApi 接口参数不再困惑:传参详解

转自:http://www.cnblogs.com/landeanfen/p/5337072.html 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的传递 三.put请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 四.delete请求 五.总结 正文 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如

程序员出路之转36岁程序员的困惑

早上看到的这篇文章,包括内容和评论都仔细的看过了,感慨颇多. 要时刻考虑自己未来的出路,尤其是在自己还能选择的时候,否则到自己被迫选择的时候就会很被动. 下面是文章和评论的转载. 今天特郁闷,经理找我谈话,我被炒了.以前自信的感觉完全不在,取而代之的是职业生涯的困惑,不知道向何处去. 想当初,为了学习更 多知识的我到了一家软件公司,后来一直没有离开软件行业.而我的好哥们毕业后直接进入税务局,银行,以为他们只是浪费青春,学不到什么知识,可是他们却顺 势识时务.会搞关系,擅长腐败而成功转型,都成副处

二维码收礼金:新潮与传统人情碰撞下的道德困惑

自互联网诞生以来,其对社会架构.人性.道德.规则等带来的冲击和颠覆是前所未有的.这其中,既有好的,也有坏的.而且好坏也是在转换之中--经过时间的沉淀,当初不被理解的新鲜事物却成为生活的一部分,当初看似风靡一时的却最终被淘汰.新事物的出现之后表现地如此具有冲击力,也让不同年龄.不同认知的人群产生不同想法. 就在近日,北京朝阳区的一个婚礼现场,伴娘在脖子上挂支付宝的收钱码收礼金,却惨遭新娘婆婆的"白眼相待".这一事件迅速走红网络,二维码收礼金是否合适引发争议.年轻人认为挺好玩,很新潮,中老