InitialContext与lookup
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的更多相关文章
- InitialContext和lookup
http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialContext() ...
- InitialContext和lookup(转)
原文地址:http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialCont ...
- 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 ...
- Class loading in JBoss AS 7--官方文档
Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...
- 浅谈JNDI的使用
原文:http://www.weicoop.com/web/article/52.html 关于什么是JNDI的概念这里不做解释,本文作为初学者根据所了解到内容做些总结,主要内容如下: 1.JNDI使 ...
- 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 ...
- 再说JNDI
说到JNDI,即熟悉又陌生,熟悉在常常使用,如EJB3.0中的@EJB注入,底层实现即是JNDI的方式:喜闻乐见的: Context ctx=new InitialContext(); Object ...
- java_web学习(12)JDBC
数据持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的 ...
- Java命名和目录接口——JNDI
JNDI即Java命名和目录接口(JavaNaming and Directory Interface),它属于J2EE规范范畴,是J2EE的核心技术之一,提供了一组接口.类和关于命名空间的概念.JD ...
随机推荐
- 【Hadoop】MapReduce笔记(一):MapReduce作业运行过程、任务执行
一.MR作业运行过程 JobClient的runJob()方法:新建JobClient实例,并调用其submitJob()方法.提交作业后,runJob()每秒轮询作业进度,如果发现上次上报后信息有改 ...
- msq 表操作与其数据类型
一:表介绍 表相当于文件, 表中的一条记录就相当于文件的一行内容, 不同的是,表中的一条记录有对应的标题,称为表的字段: id,name, age, sex,称为字段, 其余的一行内容称为一条记录. ...
- now code——小a和黄金街道(欧拉函数和快速幂模板)
小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金的数量.游戏规则是这样的:假设道路长度为米(左端点 ...
- POJ3735【矩阵快速幂】
逛了一圈...觉得这篇讲的比较清楚:传送门~ 简要概括: 1.线性代数的知识,单位矩阵的利用:(如果不知道单位矩阵的,先去补习一下线代,做几题行列式就会了): 2.然后构造好矩阵以后,直接做M次乘积运 ...
- 51nod1416(dfs)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1416 题意:中文题诶- 思路:dfs 搜索同一颜色的点.. 只 ...
- Mol Cell Proteomics. |胡丹丹| 雷公藤红素通过SIRT1-FXR 信号通路保护胆汁淤积性肝损伤
期刊:Mol Cell Proteomics 题目:Celastrol protects from cholestatic liver injury though modulation of SIRT ...
- assembly x86(nasm)串比较
预留字符串口令,输入口令串与预留密码串比较.若匹配则显示“MATCH!CONGRATULATION”,否则显示“NOMATCH!”,并让用户重新输入,程序能对口令进行测试,但测试次数最多3次,若3次输 ...
- Csc”任务不支持“SharedCompilationId”参数。请确认该参数存在于此任务中,并且是可设置的公共实例属性
今天.NetCore2.1版本,建立Asp.net Core web应用程序项目时,报以下错误: 未能使用“Csc”任务的输入参数初始化该任务. “Csc”任务不支持“SharedCompilatio ...
- mongodb javaapi网页版链接
http://www.open-open.com/doc/view/abe58dc8d0114ef2bd34d0bbccd3691e
- Python 去除列表中重复的元素(转载http://blog.csdn.net/zhengnz/article/details/6265282)
比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a']l2 = list(set(l1))print l2 还有一种据说速度更快的,没测试过两者的速度 ...