`
mjz13939958835
  • 浏览: 9394 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

JNDI实战

 
阅读更多
JNDI实战
最近两天研究JNDI,在练习的过程中遇到不少问题,现总结总结
1概念:JNDI全称Java Naming Directory Interface,概念就不用讲了。
2 运行环境搭建:
   A,需要安装JDK.
   B, JNDI software (相信现在你用的JDK一定带有的),不用安装,如javax.naming包。
   C, Service provider服务提供者,就是用在JNDI API和JNDI 服务器交互的,郁闷了吧,还有服务器一说。其实我们可以用JNDI来通过一个绑定的name和一些特定的属性获得一个具体的对象,以至于我们能够操作对象,这就是JNDI给我们提供的服务,所以说有服务器一说也是可以理解的。这个也是不用装的,JDK1.3以上提供了三个Service provider,这三个Service provider是分别基于LDAP,RMI,CORBA的。
   D 名称和目录服务器,这个是需要安装的。我用到的有两种,一种就是文件服务器(我们的PC机就有此功能),不用安装。另外一个就是基于LDAP的服务器(OpenLDAP),这个需要安装,可以去http://download.bergmans.us/openldap/openldap-2.2.19/openldap-2.2.19-db-4.3.21-openssl-0.9.7e-win32.exe这里下载免费的安装程序,默认一直NEXT安装就OK,安装好之后自己机器上会有一个OpenLDAP…的服务,自己去检查。安装程序sun网站上也有,但是在sun那里我下载到的是源码,需要在LINUX下编译安装的。
3,真枪实弹:既然大体了解了,就开始coding吧,谁怕谁啊,学习文档上把代码COPY一下不就可以运行了吗,哈哈。。。。好戏才刚刚开始,第一个程序:
import javax.naming.*;
publicclass Lookup {
    publicstaticvoid main(String[] args) {
       Hashtable env = new Hashtable();
       env.put(Context.INITIAL_CONTEXT_FACTORY,
              "com.sun.jndi.fscontext.RefFSContextFactory");
       try {
           // Create the initial context
           Context ctx = new InitialContext(env);
           System.out.println(ctx.getEnvironment());
       } catch (NamingException e) {
           System.err.println("Problem: " + e);
       }
    }
} 
多简单啊,初始化一个基于文件系统的上下文(Context),这里的RefFSContextFactory就是属于上面所介绍的Service provider了。我一运行就碰壁,NoInitialContextException发生了,我一看文档说是只有两中可能:1是没有设置Context.INITIAL_CONTEXT_FACTORY属性,明显嘛,我已经设置了,2,service provider不可用。晕 JDK不是连LDAP的服务提供者都给了吗?干麻区区的文件系统的服务提供者都不给啊,真是奇怪。过程是辛苦的,但是方案是简单的,嘿嘿,没有就去下一个贝,com.sun.jndi.fscontext.RefFSContextFactory在fscontext.jar里,去SUN网站上下载就OK,我下载的是一个ZIP文件(fscontext-1_2-beta3.zip),里面还附带者一个providerutil.jar。解压之后把两个JAR文件放在JDK路径/jre/lib/ext下,问题解决了,附带说一下,本来还需要一个文件服务器的,不过我们的PC机就是一个,前面说过。
第二个程序(基于LDAP的):
import javax.naming.*;
publicclass LDAPTest{
    publicstaticvoid main(String[] args) {
      Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,                "com.sun.jndi.ldap.LdapCtxFactory");env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");       try {
           // Create the initial context
           Context ctx = new InitialContext(env);
           System.out.println(ctx.getEnvironment());
       } catch (NamingException e) {
           System.err.println("Problem: " + e);
       }
    }
}
很简单,都是教程上的例子,这回错误是CommunicationException java.net.ConnectException: Connection refused: connect;看文档,重点查找LdapCtxFactory类,这个类是有的,在rt.jar文件下根据上面的路径是能找到的,呵呵,看来是有服务提供者了,通过学习,知道这与文件系统不一样,LDAP是需要装服务器的,于是就象2.D那样做了,然后把OpenLDAP服务启动之后,程序OK了,很激动,小小的两个问题折腾了我一天,不过解决问题之后的情绪是很激动的,至少自己入门了。可以进一步学习JNDI了,希望与大家分享一切收获。
分享到:
评论

相关推荐

    jndi使用实例

    《JNDI实战解析》 Java Naming and Directory Interface (JNDI) 是Java平台中一个重要的服务接口,它提供了一种标准的方法来查找和访问各种命名和目录服务。本文将深入探讨JNDI的使用实例,帮助开发者更好地理解和...

    JNDI.rar_JINI jndi_JNDI相关书籍_jndi

    4. **实战示例**:提供实际的代码示例,展示如何在应用程序中集成JNDI,以及如何处理各种服务的查找和管理。 **在学习JNDI时,你可能会遇到的几个关键知识点:** 1. **Naming Contexts**:命名上下文是JNDI的核心,...

    Spring JMS 消息处理-基于JNDI

    7. **实战示例**:最后,博主会提供一个实际的示例,展示如何在一个简单的Spring应用中集成JMS,包括创建JNDI资源、配置Spring容器以及测试发送和接收消息。 通过学习这篇博客,开发者可以了解到如何利用Spring JMS...

    jndi示例(java)

    8. **实战应用**:在实际开发中,JNDI的例子可能包括通过JNDI查找并连接到数据库的数据源,或者在分布式环境中查找和调用远程服务。 总结来说,"jndi示例(java)"的学习涵盖了JNDI的基本概念、核心操作,以及在...

    实战EJB 实战EJB 实战EJB

    ### 实战EJB知识点解析 #### 一、企业JavaBeans (EJB) 技术概览 **什么是企业JavaBeans技术?** 企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。...

    java开发实战经典

    12. **Java EE相关**:虽然不是Java SE的主要内容,但可能会涉及Servlet、JSP、EJB、JMS、JNDI等Java企业级应用技术。 13. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式、装饰者模式、代理模式、观察者...

    java开发实战1200例第二卷随书光盘.rar(已经勘误)

    11. **Java EE开发**:涉及Servlet、JSP、EJB、JMS、JNDI等企业级应用开发技术。 通过对这个压缩包中提供的源代码的学习和实践,读者不仅可以巩固书中的理论知识,还能提升实际编程能力,为成为一个熟练的Java...

    JMS 实战 示例

    JNDI(Java Naming and Directory Interface)是Java中用于查找和绑定资源的接口,它可以用来查找和管理JMS的消息提供者。通过JNDI,开发者可以方便地查找并连接到特定的消息队列或主题,这极大地简化了JMS的配置...

    MLDN Java Web 开发实战经典源码李兴华源代码

    4. **JNDI服务**:Java Naming and Directory Interface用于查找和管理网络资源,常用于Java EE环境中的资源定位,如数据库连接池配置。 5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器...

    北大青鸟的实战项目,无私的奉献

    在北大青鸟的实战项目中,我们主要探讨的是基于J2EE技术的软件开发实践,搭配MySQL数据库的应用。这个项目不仅提供了丰富的学习材料,还展示了实际项目开发中的关键环节,对于提升Java程序员的技能和经验有着极大的...

    enterprisejavabeans编程实战

    在“Enterprise JavaBeans编程实战”中,我们将深入探讨EJB的关键概念和技术,以帮助开发者掌握这一强大的企业级开发工具。 1. EJB组件类型: - Session Beans:代表单个客户端的会话,提供方法处理客户端请求。...

    韩顺平 j2ee视频实战教程

    教程还涵盖了J2EE中的其他关键技术,如EJB(Enterprise JavaBeans)、JNDI(Java Naming and Directory Interface)、JMS(Java Messaging Service)等,这些技术都是构建大型企业级应用不可或缺的部分。通过学习...

    JAVAWEB开发实战经典(课堂笔记)

    5. **Java EE相关技术**:包括JNDI(Java Naming and Directory Interface)、JTA(Java Transaction API)和JMS(Java Message Service)等,这些在企业级Java应用中广泛使用,笔记可能涉及这些技术的基本概念和...

    ldap Java实战

    【LDAP与Java实战】 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储和检索用户、组、网络资源等信息。它基于X.500标准,但设计得更为简单且高效,适用于互联网...

    IT运维宝典之weblogic实战

    本篇内容将深入探讨WebLogic实战中的关键知识点,帮助初学者快速掌握其核心概念与操作。 1. **WebLogic基础**:WebLogic Server是基于Java的中间件,它提供了运行企业级Java应用程序所需的环境。它支持JMS(Java ...

    Java web开发实战经典习题答案02~05

    "Java web开发实战经典习题答案02~05"这个资源提供了针对这一领域的重要练习和解答,旨在帮助开发者巩固技能并提升实战能力。以下是根据标题、描述以及压缩包中的文件名称"0605_第05章:JSP基础语法_over"所涵盖的...

    J2EE项目实战案例研究

    - **高度集成**:内置了对多种企业级技术的支持,如JDBC、JNDI、JMS、SOAP等,方便集成现有的企业信息系统。 - **安全性**:提供了多层次的安全机制,包括身份验证、授权、加密等,保障企业数据和应用的安全。 综上...

    李兴华_Java_Web开发实战经典-练习答案

    《李兴华_Java_Web开发实战经典-练习答案》是一部深入浅出的Java Web开发教程,由知名讲师李兴华老师编著。本资源主要包含MLDN(明理网络教育)李兴华老师Java Web基础课程的课后习题解答,旨在帮助学习者巩固课堂...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分则深入探讨了JSF RI(Reference Implementation)、JTA(Java Transaction API)、JNDI(Java Naming and Directory Interface)、RMI(Remote Method Invocation)、JMS(Java Message Service)、JavaMail...

Global site tag (gtag.js) - Google Analytics