`
suhuanzheng7784877
  • 浏览: 706642 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47821
社区版块
存档分类
最新评论

JavaEE5学习笔记02之JNDI

阅读更多

1.       JNDI的理解

我觉得JNDI就好像是肯德基,在远端提供外卖服务。客户本身看到的,也就是肯德基对外公开的仅仅是一份外卖菜单而已,您需要什么直接打个电话向服务台要就行了,至于汉堡包、薯条是怎么做的,客户不用关心。客户只需要知道怎么打电话,告诉他您的联系方式就行了。而客户拿到套餐后就分为2种情况了,这就取决于服务商——肯德基了。比如说人家服务上需要回收您剩下的废弃物用于二次循环利用(对应于有状态的SessionBean);或者如果说人家服务商不管了,给你送过去就不管了(无状态的SessionBean),您爱怎么用就怎么用,无所谓。其中网上的菜谱和您最终拿到的对象是一个对应关系。菜谱是比较抽象的,您最后拿到的却是实实在在的,为您服务的对象。

官方的说法是:JNDI(Java Naming and Directory Interface)SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。JNDI可访问的现有的目录及服务有:DNSXNamNovell目录服务、LDAP(Lightweight Directory Access Protocol轻型目录访问协议)CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMIDSML v1&v2NIS

2.       JNDI的应用

1.JavaEE中一般是利用JNDI获取应用上下文档中的数据源对象

Context ctx = new InitialContext();

DataSource ds1 = (DataSource) ctx.lookup("java:/oracle1");

其中oracle1就是应用上下文中的JNDI名称。

2.利用JNDI获得EJBSessionBean

Context context = init();

 

Hello hello = (Hello) context.lookup("HelloEAOImpl/remote-ejb.sessionBean.Hello");

 

System.out.println(hello.hello("素还真"));

JNDI获取远程的SessionBean接口之后为自己的业务服务。

3.松耦合的方式访问远程、处在应用上下文的对象

对象-绑定代码

    //环境设置

    String factory = "org.jnp.interfaces.NamingContextFactory";

    String serverURL = "jnp://127.0.0.1:1099";

    Hashtable env = new Hashtable();

    env.put(Context.INITIAL_CONTEXT_FACTORY, factory);

    env.put(Context.PROVIDER_URL, serverURL);

   

    //正式绑定

    final String testName = "testName";

    Context ctx = new InitialContext(env);

    JFrame mainWin = new JFrame("服务端控件");

    mainWin.setBounds(20,30,400,300);

    ctx.rebind(testName,mainWin);

    out.print("绑定成功");

对象-获取代码

       String factory = "org.jnp.interfaces.NamingContextFactory";

       String serverURL = "jnp://127.0.0.1:1099";

       Hashtable env = new Hashtable();

       env.put(Context.INITIAL_CONTEXT_FACTORY, factory);

       env.put(Context.PROVIDER_URL, serverURL);

 

       Context context = new InitialContext(env);

       JFrame mainWin = (JFrame) context.lookup("testName");

       //mainWin.setBounds(20,30,400,300);

       mainWin.setVisible(true);

context.close();

3.       JNDI的使用步骤

1.创建应用上下文Context(可以自己加入配置)

       String factory = "org.jnp.interfaces.NamingContextFactory";

       String serverURL = "jnp://127.0.0.1:1099";

       Hashtable env = new Hashtable();

       env.put(Context.INITIAL_CONTEXT_FACTORY, factory);

       env.put(Context.PROVIDER_URL, serverURL);

 

       Context context = new InitialContext(env);

2.调用Contextlookup方法查找自己想要的对象

JFrame mainWin = (JFrame) context.lookup("testName");

3.用查找后的对象为自己的业务提供相关的服务

mainWin.setVisible(true);

4.关闭Context

context.close();

如此一个简单的调用JNDI流程完成。

4.       JbossJNDI支持

实际上上面的代码已经体现了JBossJNDI的支持了,数据源可以通过JBOSS管理界面进行配置,在代码中利用以下代码就可以获取数据源,(此代码有重复)

           Context ctx = new InitialContext();

           DataSource ds1 = (DataSource) ctx.lookup("java:/oracle1");

还有就是绑定EJBsessionBean,上面代码也有过交代。只是EJB必须以jar的方式部署到JBoss下面,或者打进war包中,和web项目一起发布到JBoss当中。最后一个就是以一种固定的配置上下文、硬编码的方式将命名和对象捆绑起来发布到JBoss中,获取的时候也通过固定的配置获取上下文,从而获取想要的对象。

所以可以看到,一般是数据源、EJBJNDI捆绑比较多,自己做一个捆绑服务对象、获取的情况相对来说少一些,也不太友好。

分享到:
评论

相关推荐

    JavaEE5学习笔记01-JTA和数据库事务

    ### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...

    javaEE学习笔记

    以上就是JavaEE学习笔记中可能涵盖的关键知识点,它们构成了JavaEE开发的基础,并且每个部分都有深入研究的价值。通过学习和实践这些技术,开发者能够构建出高效、稳定和可扩展的企业级Web应用。

    JavaEE5学习笔记07-Web层与EJB集成总结

    ### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...

    JavaEE5学习笔记04-JavaMail使用总结

    ### JavaEE5学习笔记04-JavaMail使用总结 在JavaEE5的学习过程中,JavaMail是一个非常重要的组件,它提供了发送、接收电子邮件的功能,并且能够与各种不同的邮件服务器进行交互。下面将根据提供的内容,详细解析...

    JavaEE学习笔记

    JavaEE学习笔记是Java开发领域中的重要资源,它包含了丰富的技术知识和实践经验,旨在帮助初学者和有经验的开发者深入理解Java企业级应用的开发。JavaEE(Java Platform, Enterprise Edition)是Oracle公司主导的...

    JavaEE2017最新版基础班学习笔记

    本"JavaEE2017最新版基础班学习笔记"涵盖了JavaEE入门所需的基本概念和技术,是新手学习JavaEE的良好参考资料。以下将详细介绍其中可能涉及的关键知识点: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的...

    Javaee课堂笔记精华总结就业必备

    这个"Javaee课堂笔记精华总结就业必备"显然是一份针对求职者或初入职场的开发者准备的学习材料,旨在帮助他们掌握JavaEE的核心概念和技术,以提升就业竞争力。 JavaEE平台包括一组服务、APIs和协议,用于构建分布式...

    JavaEE基础笔记.zip

    在学习JavaEE的过程中,你需要掌握以下几个核心知识点: 1. **Servlet与JSP**:Servlet是JavaEE中的基础组件,用于接收和响应HTTP请求。它们可以处理动态内容,而JSP(JavaServer Pages)则是一种视图技术,允许...

    javaee思维导图版笔记-吉林大学

    "javaee思维导图版笔记-吉林大学" 本笔记主要涵盖了Java EE的基础知识,包括Servlet、JSP、JNDI、JPA等方面的内容。 一、Servlet概述 Servlet是Java EE中的一种服务器端组件,用于处理HTTP请求并返回响应。...

    《IT学习资料2》-Java 学习笔记.zip

    《IT学习资料2》-Java 学习笔记.zip 是一份专为Java初学者和进阶者准备的综合学习资源,包含了大量的课程材料和实践指导。这个压缩包中的内容旨在帮助用户全面掌握Java编程语言,从基础语法到高级特性的运用,再到...

    javaweb 崔希凡全套笔记

    【JavaWeb崔希凡全套笔记】是一份全面深入学习JavaWeb和JavaEE技术的重要资源,由知名讲师崔希凡精心编撰。这份笔记总计涵盖了28天的学习内容,旨在帮助学员系统地掌握JavaWeb和JavaEE的核心知识。下面将详细阐述...

    达内培训笔记

    【JavaEE技术体系详解】 JavaEE(Java Platform, Enterprise ...达内培训笔记涵盖了这些JavaEE的重要概念和技术,对于初学者和进阶开发者都是宝贵的学习资料,通过深入学习和实践,可以掌握企业级应用开发的关键技能。

    韩顺平servlet与jsp_笔记与心得

    ### 韩顺平servlet与jsp_...学习这些内容不仅有助于理解JavaEE的核心概念和技术栈,还能帮助开发者掌握如何构建高效、可维护的Web应用。通过实践这些模式和技术,开发者可以提升自己的技能,并为实际项目开发做好准备。

    JAVA EE知识串讲

    Java EE,原名为J2EE,是Java平台上用于构建企业级分布式应用的框架。...而《J2EE学习笔记》这份资料将是你探索这个领域的宝贵指南,它将帮助你系统性地理解和掌握Java EE的各个方面,为你的编程事业打下坚实的基础。

    JavaWeb笔记整理(全面)

    5. **EJB**:Enterprise JavaBeans是JavaEE的一部分,提供了创建服务器端组件的框架,用于构建可复用的、安全的、分布式的业务逻辑。 6. **JSP内置对象**:包括request、response、session、application、...

Global site tag (gtag.js) - Google Analytics