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实战解析》 Java Naming and Directory Interface (JNDI) 是Java平台中一个重要的服务接口,它提供了一种标准的方法来查找和访问各种命名和目录服务。本文将深入探讨JNDI的使用实例,帮助开发者更好地理解和...
4. **实战示例**:提供实际的代码示例,展示如何在应用程序中集成JNDI,以及如何处理各种服务的查找和管理。 **在学习JNDI时,你可能会遇到的几个关键知识点:** 1. **Naming Contexts**:命名上下文是JNDI的核心,...
7. **实战示例**:最后,博主会提供一个实际的示例,展示如何在一个简单的Spring应用中集成JMS,包括创建JNDI资源、配置Spring容器以及测试发送和接收消息。 通过学习这篇博客,开发者可以了解到如何利用Spring JMS...
8. **实战应用**:在实际开发中,JNDI的例子可能包括通过JNDI查找并连接到数据库的数据源,或者在分布式环境中查找和调用远程服务。 总结来说,"jndi示例(java)"的学习涵盖了JNDI的基本概念、核心操作,以及在...
### 实战EJB知识点解析 #### 一、企业JavaBeans (EJB) 技术概览 **什么是企业JavaBeans技术?** 企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。...
12. **Java EE相关**:虽然不是Java SE的主要内容,但可能会涉及Servlet、JSP、EJB、JMS、JNDI等Java企业级应用技术。 13. **设计模式**:介绍常见的设计模式,如单例模式、工厂模式、装饰者模式、代理模式、观察者...
11. **Java EE开发**:涉及Servlet、JSP、EJB、JMS、JNDI等企业级应用开发技术。 通过对这个压缩包中提供的源代码的学习和实践,读者不仅可以巩固书中的理论知识,还能提升实际编程能力,为成为一个熟练的Java...
JNDI(Java Naming and Directory Interface)是Java中用于查找和绑定资源的接口,它可以用来查找和管理JMS的消息提供者。通过JNDI,开发者可以方便地查找并连接到特定的消息队列或主题,这极大地简化了JMS的配置...
4. **JNDI服务**:Java Naming and Directory Interface用于查找和管理网络资源,常用于Java EE环境中的资源定位,如数据库连接池配置。 5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器...
在北大青鸟的实战项目中,我们主要探讨的是基于J2EE技术的软件开发实践,搭配MySQL数据库的应用。这个项目不仅提供了丰富的学习材料,还展示了实际项目开发中的关键环节,对于提升Java程序员的技能和经验有着极大的...
在“Enterprise JavaBeans编程实战”中,我们将深入探讨EJB的关键概念和技术,以帮助开发者掌握这一强大的企业级开发工具。 1. EJB组件类型: - Session Beans:代表单个客户端的会话,提供方法处理客户端请求。...
教程还涵盖了J2EE中的其他关键技术,如EJB(Enterprise JavaBeans)、JNDI(Java Naming and Directory Interface)、JMS(Java Messaging Service)等,这些技术都是构建大型企业级应用不可或缺的部分。通过学习...
5. **Java EE相关技术**:包括JNDI(Java Naming and Directory Interface)、JTA(Java Transaction API)和JMS(Java Message Service)等,这些在企业级Java应用中广泛使用,笔记可能涉及这些技术的基本概念和...
【LDAP与Java实战】 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储和检索用户、组、网络资源等信息。它基于X.500标准,但设计得更为简单且高效,适用于互联网...
本篇内容将深入探讨WebLogic实战中的关键知识点,帮助初学者快速掌握其核心概念与操作。 1. **WebLogic基础**:WebLogic Server是基于Java的中间件,它提供了运行企业级Java应用程序所需的环境。它支持JMS(Java ...
"Java web开发实战经典习题答案02~05"这个资源提供了针对这一领域的重要练习和解答,旨在帮助开发者巩固技能并提升实战能力。以下是根据标题、描述以及压缩包中的文件名称"0605_第05章:JSP基础语法_over"所涵盖的...
- **高度集成**:内置了对多种企业级技术的支持,如JDBC、JNDI、JMS、SOAP等,方便集成现有的企业信息系统。 - **安全性**:提供了多层次的安全机制,包括身份验证、授权、加密等,保障企业数据和应用的安全。 综上...
《李兴华_Java_Web开发实战经典-练习答案》是一部深入浅出的Java Web开发教程,由知名讲师李兴华老师编著。本资源主要包含MLDN(明理网络教育)李兴华老师Java Web基础课程的课后习题解答,旨在帮助学习者巩固课堂...
第二部分则深入探讨了JSF RI(Reference Implementation)、JTA(Java Transaction API)、JNDI(Java Naming and Directory Interface)、RMI(Remote Method Invocation)、JMS(Java Message Service)、JavaMail...