Tomcat   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有关InitialContext()的困惑 <转>大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Context initial = new InitialContext();@H_616_1@Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter");    

一般情况下,intial.lookup("")中的参数就是你的JNDI名称。但是用的应用服务器,是把JNDI名放到java:comp/env/ejb/后面的。两种方式都没有错。比如:@H_616_1@tomcat5.0中使用的是Object objref = initial.lookup("java:comp/env/ejb/SimpleConverter"); WebLogic6.1中使用的是:@H_616_1@Object objref = initial.lookup("HelloHome");

InitialContext的构造方法主要是准备JNDI的访问环境,如果不加参数,那就意味着是用本地匿名访问,也就是说,用户角色是匿名,ctx.PROVIDER_URL是LOCALHOST@H_616_1@所以,对于本地测试(并且JNDI资源没有设置安全属性)这两段代码没有区别,如果要访问远程的JNDI资源,就必须用饱含JNDI环境参数Hashtable初始化InitialContext。

必要的环境参数如:@H_616_1@Context.INITIAL_COntexT_FACTORY//连接工厂@H_616_1@Context.PROVIDER_URL//访问连接@H_616_1@Context.Security_PRINCIPAL//安全用户@H_616_1@Context.Security_CREDENTIALS//用户密码 

EJBLocalHome->本地主接口,负责控制Bean的整个生命周期,另外,可以看作是@H_616_1@生成Bean引用的@H_616_1@“工厂“类。  

EJBLocalObject->本地组件接口,定义Bean要向客户提供的业务方法的签名。

本地接口是一种轻量级代理,语法更简单(直接类型转换,不需要narrow),

开销更小,速度更快。规范说可以在同一JVM内使用,我只在同一个EJB包内用过。@H_616_1@EJBLocalHome+EJBLocalObject   vs   EJBHome+EJBObject:   @H_616_1@  前一对不是远程调用,省时省力    @H_616_1@Home   vs   Object:   @H_616_1@  前者是Factory模式,用来生成后者;后者是proxy模式,用来暴露商业逻辑

InitialContext context = new InitialContext();           @H_616_1@Object ref = context.lookup(JNDIName);           @H_616_1@accHome = (AccountHomE)PortableRemoteObject.narrow(ref,AccountHome.class);       @H_616_1@ejbObject = accHome.create();   @H_616_1@  上面即是ejb实例的一个很常见的创建过程   @H_616_1@理解如下:   @H_616_1@   上面的创建过程是通过远程接口创建ejb实例的过程:即先通过JNDIname找到ejb本地接@H_616_1@口的一个实例,然后再通过本地接口的实例创建ejb实例,PortableRemoteObject.narrow(ref,AccountHome.class);@H_616_1@实际上是一个强制转换,由于是远程强制转换,所以要用PortableRemoteObject.narrow()方法。

@H_616_1@// 创建一个JNDI naming contest@H_616_1@           Context initial = new InitialContext();@H_616_1@           @H_616_1@           // 从JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称)@H_616_1@//         Object objref = initial.lookup("java:comp/env/ejb/ConverterEJB");@H_616_1@           Object objref = initial.lookup("MyConverter");@H_616_1@           @H_616_1@           // 通过objref 得到ConverterHome 本地接口@H_616_1@           ConverterHome home = (ConverterHomE)PortableRemoteObject.narrow(@H_616_1@                   objref,ConverterHome.class);@H_616_1@           @H_616_1@           // 再由Home 接口的create 方法来创建一个服务器上的EJB实例@H_616_1@           Converter currencyConverter = home.create();@H_616_1@           @H_616_1@           // 调用EJB 中的方法@H_616_1@           代码省略

大佬总结

以上是大佬教程为你收集整理的有关InitialContext()的困惑 <转>全部内容,希望文章能够帮你解决有关InitialContext()的困惑 <转>所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: