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 中的方法 代码省略
转载于:https://www.cnblogs.com/firstdream/p/7851695.html
InitialContext与lookup相关推荐
- InitialContext和lookup
http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结--小心new InitialContext() ...
- 【转】InitialContext与lookup
Context initial = new InitialContext(); Object objref = initial.lookup("java:comp/env/ejb/Simpl ...
- InitialContext和lookup(转)
原文地址:http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结--小心new InitialCont ...
- 每一次new InitialContext()方法花费大概100毫秒到200毫秒之间,而每一次lookup()大概要花10毫秒到30毫秒之间
最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结--小心new InitialContext(). 在做客户端的时候,发现连接服务器,搜索数据库,然后返回结果集.每一次执 ...
- Liferay Portal Json Web Service 反序列化漏洞(CVE-2020-7961)
之前在CODE WHITE上发布了一篇关于Liferay Portal JSON Web Service RCE的漏洞,之前是小伙伴在处理这个漏洞,后面自己也去看了.Liferay Portal对于J ...
- JMS : Java Message Service (Java消息服务)之一 [转]
为什么80%的码农都做不了架构师?>>> 1 引言 1.1 编写目的 本文作为B2bi项目中开源产品JORAM的使用指导文档,旨在帮助项目组人员方便明了的进行JMS模块的详细设 ...
- jboss ejb_使用JBoss AS 7进行SSL加密的EJB调用
jboss ejb 加密客户端和服务器之间的通信可为您的系统提供改进的安全性和隐私保护. 这可能是客户的一项重要要求,尤其是在客户端或服务器需要在不受保护的网络中工作时. 本文向您展示了如何在JBos ...
- 使用JBoss AS 7进行SSL加密的EJB调用
加密客户端和服务器之间的通信可为您的系统提供改进的安全性和隐私保护. 这可能是客户的一项重要要求,尤其是在客户端或服务器需要在不受保护的网络中工作时. 本文向您展示了如何在JBoss AS 7中设置S ...
- testNG入门详解
TestNG 的注释: @DataProvider @ExpectedExceptions @Factory @Test @Parameters <suite name="Parame ...
最新文章
- C++中构造函数和析构函数
- Java 比较相等 == or .equal()?
- Microsoft Teams的Outgoing Webhook开发入门
- Spark Conf配置用法
- 2019小程序没必要做了_2019年,小程序还要不要做
- 使用geronimo-javamail_1.4发送邮件的有关说明
- 前端经典面试题(持续更新)
- C# word类库 光标移动
- 程序猿头头(object与数组的简单应用)
- 如何在低代码开发平台上,实施表单设计流程
- 微信营销和微博营销有什么不同
- 安卓多媒体开发!Android高级工程师面试实战,系列篇
- 手机如何实现边有线上网边充电?
- 计算机水冷排原理,玩转水冷电脑 冷排是关键
- 比原链发布2020年度BTM销毁计划:保底销毁100万美元BTM,不设上限
- McAfee防火墙注意防止远程桌面被阻止
- 驱动开发(二)——最简单的驱动程序分析
- 10G网络硬盘免费领 唯一款不用翻墙就能用的良心网络硬盘
- python主网站网址是_python网站主题
- JIT 即时编译及优化技术
热门文章
- win7网络里的计算机,Win7两台电脑共享上网的方法
- python创建画布语句_canvas元素创建画布
- java铁傀儡,铁傀儡 (Iron Golem)
- Microsoft Office 2003 遇到错误 总是出现需要以安全模式重启
- IT巨头2008第一季财报冰火两重天
- 【souapp搜应用】:究竟是谁干掉了我电脑上的百度电脑管家?
- 口袋妖怪c语言代码大全,口袋妖怪_《口袋妖怪黑白》全金手指列表 - 口袋妖怪中文网...
- std::sort 用法
- 解决在小程序/H5上点击输入框键盘弹起后弹框显示不全问题@令狐张豪
- 一款精美的红色农家乐美食客房旅馆模板源码 v4.2