分类: J2EE 2007-12-11 13:44 6561人阅读 评论(0) 收藏 举报
ejb object bean weblogic java 应用服务器

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实例的过程相关推荐

  1. 新建的ORACLE实例要开启监听,创建ORACLE实例与设置监听器过程

    一.在ORACLE创建一个新的实例过程: 1.安装好ORACLE服务端. 2.创建数据库实例,使用ORAHOME目录下的"Configuration and Migration Tools& ...

  2. 2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法。 宏使用如下: #[derive(Builder)] pub stru

    2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法. 宏使用如下: #[derive(Builder)] pub stru ...

  3. 详解Linux交互式shell脚本中创建对话框实例教程

    详解Linux交互式shell脚本中创建对话框实例教程 本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一 ...

  4. oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031

    参考[三思笔记]一步一步学DataGuard文档做dg的开始准备阶段,做主库的副本数据库,做副本数据库的第一阶段,创建辅助实例,基本过程为: 1.创建密码文件 2.创建初始化参数文件 3.连接并启动辅 ...

  5. 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)

    2019独角兽企业重金招聘Python工程师标准>>> MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 四.运行XDoclet代码生成 ...

  6. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. vue实战记录(二)- vue实现购物车功能之创建vue实例

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(二) GitHub:sue ...

  8. 手动创建数据库实例全攻略7:UNDO

    手动创建数据库实例全攻略7:UNDO 一.偷来的常识 网络上这个哥们写的太精彩了,直接复制阅读之! 文字来源:http://blog.csdn.net/tianlesoftware/article/d ...

  9. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

最新文章

  1. 你有哪些 Deep learning(RNN、CNN)调参的经验?
  2. Metasploit+python生成免杀exe过360杀毒
  3. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...
  4. 小学生在家自学python_小学生都能学会的python(函数)
  5. 深入浅出 Java Concurrency (6): 锁机制 part 1[转]
  6. 快排算法 java_快排算法的实现与讲解(java/C++)
  7. web虚拟服务器4核32g,Web服务器配备四核的优势
  8. 支付宝超硬硬件发布: 将颠覆现有支付方式!
  9. JQuery使用总结
  10. 接口测试用例设计方法
  11. 使用数字全通滤波器对IIR滤波器进行相位补偿
  12. XML Notepad 2007 汉化版发布
  13. Git入门——tortoisegit使用问题:git不显示图标?
  14. 注册商标流程需要材料
  15. eclipse保存后不会自动编译
  16. 做一个接地气的产品经理
  17. C# 浅拷贝与深拷贝
  18. 已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等。
  19. Linux安装Jenkis后启动Unit jenkins.service entered failed state (一)
  20. 【修复日常bug】微信小程序canvas画商品海报出现个别用户无法生成的情况

热门文章

  1. 编译原理实验一PL/0词法分析器c++
  2. linux 终端设备 - 线路规程
  3. matlab建模大赛程仁山,基于MATLAB赛程安排方案设计.doc
  4. 计算机局域网主要的传输方式,局域网通常采用的传输方式是
  5. #基础学习笔记#移动端
  6. linux中zip加密压缩
  7. C【talkback.c】演示与用户交互
  8. Spring5.3.x源码环境构建
  9. D - Age of Moyu HDU - 6386 -BFS+DFS分层最短路
  10. CRICQSCRI2012MCRIGAI显色性计算软件工具