new InitialContext() 创建ejb实例的过程
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 中的方法
代码省略
new InitialContext() 创建ejb实例的过程相关推荐
- 新建的ORACLE实例要开启监听,创建ORACLE实例与设置监听器过程
一.在ORACLE创建一个新的实例过程: 1.安装好ORACLE服务端. 2.创建数据库实例,使用ORAHOME目录下的"Configuration and Migration Tools& ...
- 2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法。 宏使用如下: #[derive(Builder)] pub stru
2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法. 宏使用如下: #[derive(Builder)] pub stru ...
- 详解Linux交互式shell脚本中创建对话框实例教程
详解Linux交互式shell脚本中创建对话框实例教程 本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一 ...
- oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031
参考[三思笔记]一步一步学DataGuard文档做dg的开始准备阶段,做主库的副本数据库,做副本数据库的第一阶段,创建辅助实例,基本过程为: 1.创建密码文件 2.创建初始化参数文件 3.连接并启动辅 ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
2019独角兽企业重金招聘Python工程师标准>>> MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 四.运行XDoclet代码生成 ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- vue实战记录(二)- vue实现购物车功能之创建vue实例
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...
- 手动创建数据库实例全攻略7:UNDO
手动创建数据库实例全攻略7:UNDO 一.偷来的常识 网络上这个哥们写的太精彩了,直接复制阅读之! 文字来源:http://blog.csdn.net/tianlesoftware/article/d ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
最新文章
- 你有哪些 Deep learning(RNN、CNN)调参的经验?
- Metasploit+python生成免杀exe过360杀毒
- 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...
- 小学生在家自学python_小学生都能学会的python(函数)
- 深入浅出 Java Concurrency (6): 锁机制 part 1[转]
- 快排算法 java_快排算法的实现与讲解(java/C++)
- web虚拟服务器4核32g,Web服务器配备四核的优势
- 支付宝超硬硬件发布: 将颠覆现有支付方式!
- JQuery使用总结
- 接口测试用例设计方法
- 使用数字全通滤波器对IIR滤波器进行相位补偿
- XML Notepad 2007 汉化版发布
- Git入门——tortoisegit使用问题:git不显示图标?
- 注册商标流程需要材料
- eclipse保存后不会自动编译
- 做一个接地气的产品经理
- C# 浅拷贝与深拷贝
- 已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等。
- Linux安装Jenkis后启动Unit jenkins.service entered failed state (一)
- 【修复日常bug】微信小程序canvas画商品海报出现个别用户无法生成的情况
热门文章
- 编译原理实验一PL/0词法分析器c++
- linux 终端设备 - 线路规程
- matlab建模大赛程仁山,基于MATLAB赛程安排方案设计.doc
- 计算机局域网主要的传输方式,局域网通常采用的传输方式是
- #基础学习笔记#移动端
- linux中zip加密压缩
- C【talkback.c】演示与用户交互
- Spring5.3.x源码环境构建
- D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路
- CRICQSCRI2012MCRIGAI显色性计算软件工具