`
yangzb
  • 浏览: 3500506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JNDI技术个人总结

    博客分类:
  • Java
阅读更多

1.       什么是 JNDI Java Naming and Directory Interface

JNDI 是用于访问不同命名和目录服务的统一 API 接口;

2.       JNDI 的架构和原理

      1.       架构:

         第一层: java 代码,是访问 JNDI 的代码;

         第二层: JNDI API :统一的命名和目录服务接口

         第三层: JNDI Naming Manager JNDI 管理器

         第四层: JNDI SPI :用于构建 JNDI 实现的框架,能够动态的插入命名和目录服务提供商的产品;

         第五层:命名和目录服务提供商的产品;

         命名和目录服务提供商的产品 , 例如: DNS,LDAP,NIS,NDS……..; 因为这些产品都是不同的提供商提供的产品,所以他们的命名和目录服务的标准不一致,各个目录服务采用的访问协议也是不一样的,所以,要是直接访问他们的话,就要编写不同的 java 代码来访问他们;因此, JNDI SPI 就解决了这个问题,它能动态的插入这些命名和目录服务,能够将其协议专属的目录产品集成到系统中,使得我们能只需要调用一个统一的 javaAPI 就能够访问插入的产品了;

         2 .原理:

               JNDI 其实很好理解,他就是一个树状的结构,它的最顶是一个 initialContext 节点,然后它的下面就是绑定的一些对象或是一些 subContext ,用 JNDI 树就能够查找到树中每一个绑定上的节点上的对象的引用;

3. 怎样连接到 JNDI 上?

                  Environment environment = new Environment() ;// 创建一个环境对象

                   environment.setProviderurl(“t3://www.blogjava.net”) ;

                   environment.setSecurityPrincipal(“todd”) ;// 认证的用户名

                   environment.setSecurityCredentials(“841026”) ;// 密码

                   Context context = environment.getInitialContext() ;

         // 创建一个 subContext 并绑定一个对象:

                   Context subContext = context.createSubcontext(“subContext”) ;

                   subContext.rebind(“newObject”,object) ;// 绑定的对象必须是可序列化的

                   subContext.close() ;

                   context.close() ;

4. 如何通过 JNDI 查找 bind 的对象?

         Object object = context.lookup(“User”) ;

         // user 窄化到原型

         User user = (User)javax.rmi.PortableRemoteObject.narrow(object, User.class) ;

         context.close() ;

 

Spring weblogic jndi集成

虽然 spring本身是可以直接使用 jndi来进行获取一些对象 ,但是在和 weblogic集成的时候往往还是容易出

现问题 ( web应用的时候出现问题的可能性不大 ,因为 container已经做了很多事情了 .)但是在 ide或者其

他的应用环境下 (不同的 jvm的时候 ),通常找不到 provider_url等属性造成无法找到 jndi.

修改配置文件如下 :

<!-- 通过 jndi的方式来调用 datasource,即使不一定是在 j2ee环境中也可以正常使用默认情况下,如果

没有指定, "java:comp/env/"将放在后面 jndi名称前面

-->

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName">

<value>jdbc/myDatasource</value>

</property>

<!-- 如果你不想使用 'java:comp/env/'前缀的话请设置下面的值为 true, 默认值为 false -->

<property name="resourceRef">

<value>false</value>

</property>

<property name="jndiEnvironment">

<props>

Spring连接 weblogic-DataSource错误

<!-- The value of Context.PROVIDER_URL -->

<prop key="java.naming.provider.url">t3://localhost:7001</prop>

<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory

</prop>

</props>

</property>

</bean>

注意在设置的时候由于不在同一个 jvm里面 ,所以一定要设置 provider.url factory.initial的属性值 ,

则会出现 NoInitialContextException的异常出现 .

此外如果和其他的应用服务器集成的话可能不只是要设置上面的两个属性,还要设置相关的其他属性。详

细情况参考: javax.naming.Context类的说明文档。

http://java.sun.com/j2se/1.4.2/docs/api/javax/naming/Context.html

其中设置的:

<property name="jndiEnvironment">

<props>

<!-- The value of Context.PROVIDER_URL -->

<prop key="java.naming.provider.url">t3://localhost:7001</prop>

<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory

</prop>

</props>

</property> 实际上就是设置 Context初始化的时候设置的 Properties属性。

http://java.mblogger.cn/layout/posts/11849.aspx

=====================================================================

New Document<bean id="zooDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName"><value>ZOO_JNDI</value></property>

<property name="jndiEnvironment"> <props>

<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>

<prop key="java.naming.provider.url">t3://localhost:7001</prop>

<prop key="java.naming.security.principal">weblogic</prop>

<prop key="java.naming.security.credentials">weblogic</prop>

</props>

</property>

</bean>

=====================================================================

各种应用服务器的不同的 properties集合 :

websphere:

java.naming.provider.url->iiop://websphere.machine.domain.com:900

java.naming.factory.initial ->com.ibm.websphere.naming.WsnInitialContextFactory

java.naming.factory.url.pkgs ->com.ibm.ws.naming

org.omg.CORBA.ORBClass->com.ibm.rmi.iiop.ORB

org.omg.CORBA.ORBSingletonClass->com.ibm.rmi.corba.ORBSingleton

javax.rmi.CORBA.UtilClass->com.ibm.rmi.javax.rmi.CORBA.Util

javax.rmi.CORBA.StubClass->com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl

javax.rmi.CORBA.PortableRemoteObjectClass->com.ibm.rmi.javax.rmi.PortableRemoteObject

weblogic:

java.naming.factory.initial -> weblogic.jndi.WLInitialContextFactory

java.naming.provider.url -> t3://localhost:7001

jboss:

ava.naming.factory.initial ->org.jnp.interfaces.NamingContextFactory

java.naming.factory.url.pkgs->org.jboss.naming.client

java.naming.provider.url ->jnp://10.0.0.18:1099

sunone IMQ ldap:

java.naming.provider.url -> ldap://localhost:389/dc=yusong,dc=com

java.naming.factory.initial -> com.sun.jndi.ldap.LdapCtxFactory

sunone Application Server:

java.naming.provider.url -> iiop://192.168.0.34:3700

java.naming.factory.initial -> com.sun.jndi.cosnaming.CNCtxFactory

oracle oc4j:

java.naming.factory.initial->com.evermind.server.ApplicationClientInitialContextFactory

java.naming.provider.url->ormi://localhost/bmpapp

分享到:
评论

相关推荐

    windchill JNDI guide

    - **最佳实践**:总结并分享在不同场景下使用JNDI Adapter的最佳实践,可以帮助用户避免常见问题,并充分利用JNDI的全部潜力。 综上所述,JNDI Adapter是Windchill系统架构中的重要组成部分,它不仅增强了系统的可...

    工作总结模板 IT java

    总结,通过这个Java开发工作模板,我们不仅回顾了项目中的具体任务和技术,还对个人的技能进行了评估,明确了未来的发展方向。在IT行业,不断学习和进步是保持竞争力的关键,通过工作总结,我们可以更好地规划职业...

    Ldap技术总结

    **LDAP技术概述** ...总结来说,LDAP是一种高效、灵活的目录服务协议,通过JNDI接口,Java开发者可以轻松地集成和利用LDAP功能。了解并熟练掌握这些知识点对于构建和维护大规模分布式系统至关重要。

    LDAP 技术总结.

    然而,由于 X.500 不支持广泛使用的 TCP/IP 协议,它在个人电脑,尤其是 Windows 系统上的应用受到限制。为了解决这个问题, Lightweight Directory Access Protocol (LDAP) 应运而生。LDAP 是基于 X.500 标准设计的...

    卫生专业技术资格考试的考务信息管理系统分析.docx

    总结来说,卫生专业技术资格考试的考务信息管理系统是信息化时代考试管理的重要工具,它需要综合运用计算机网络技术、数据库技术、信息安全技术以及现代管理理念,以满足日益增长的考试组织和人才评价需求,推动卫生...

    Web2.0技术应用---论坛开发

    **技术挑战与经验总结** 在开发过程中可能会遇到的技术问题包括性能优化、安全防护(如SQL注入、XSS攻击)、跨域问题、并发控制等。对于这些问题,开发者需要采用适当的技术手段,如使用缓存提高响应速度,利用HTTPS...

    log4j2.17.2

    总结,log4j2.17.2是应对Log4j2 RCE漏洞的重要更新,通过加强安全配置和限制危险功能,为Java应用程序提供了更坚固的安全屏障。对于依赖Log4j2的系统而言,及时升级至该版本是保障系统安全、防范潜在风险的有效手段...

    web应用技术课程设计(图书管理系统).pdf

    - **功能模块设计**:分为用户模块(注册、登录、个人信息管理)、图书信息模块(添加、修改、删除)、借阅管理模块(借书、还书、续借)等。 - **数据库设计**:使用ER图进行实体关系建模,存储图书、用户、借阅...

    【个人经验】SSH集成步骤 SSI集成步骤

    3. 如果在Tomcat中以JNDI方式发布JbossCache,需要配置Tomcat的context.xml和JbossCache的JNDI配置。 4. 集成到Hibernate中,可以提高数据读取速度,避免频繁的数据库交互。 总结,SSH和SSI集成涉及到多个层次的...

    JSP高级编程          

    根据给定文件的信息,本文将围绕JSP高级编程的相关...以上是对给定文件中提到的关键知识点的总结和详细解释,涵盖了从JavaBeans组件技术到JSP网络程序设计等多个方面,旨在为读者提供一个全面的JSP高级编程技术指南。

    第1讲Web开发简介和Tomcat服务器的安装与配置.ppt

    总结:本课程《第1讲Web开发简介和Tomcat服务器的安装与配置》旨在教授学生如何使用JavaWeb技术进行B/S架构的应用开发,包括基础的前端语言和动态Web技术,以及关键的服务器端工具Tomcat的使用。通过学习,学生将...

    一份为找工作而发愁的朋友制定的求职业简历

    - **技术栈**:案例中提到的技术栈包括但不限于JSP、Servlet、JavaBean、Hibernate、JNDI、XML、Struts和JSTL等。这些技术通常用于Web应用程序的开发。 - **项目经验**: - **项目1**:“XXX公司OA系统”使用了MVC...

    j2ee学习经验和流程

    J2ME主要用于移动设备如手机和个人数字助理(PDA);而J2EE则是面向企业级应用程序的开发,支持构建复杂的分布式系统和Web应用。 #### 二、J2EE的学习起点 对于初学者而言,建议首先掌握J2SE的基础知识,这是J2EE...

    达内J2EE课堂笔记和上课的代码

    4. **个人总结**:课程笔记整理详尽,便于回顾和复习,有助于巩固知识。 通过深入学习达内的J2EE课堂笔记和代码,可以系统性地理解和掌握J2EE技术体系,提升Java企业级应用开发的能力。对于寻找工作的朋友来说,这...

    J2EE课程设计报告 校园淘宝

    - **技术规范**:JSP(Java Server Pages)、JavaBean、Servlet、JDBC(Java Database Connectivity)、JMS(Java Message Service)、JNDI(Java Naming and Directory Interface)等。 - **框架**:Struts、Spring...

    参考简历模板三.doc

    根据提供的简历模板和个人信息,我们可以总结出以下关键的IT知识点和技术能力: ### 个人基本信息 - **姓名**:Tom - **学历**:本科 - **性别**:男 - **年龄**:xx岁 - **专业**:计算机科学与技术 - **民族**:...

    SSM汽车配件销售业绩管理统开题报告.doc

    3. 经验总结法:结合个人开发经验,进行系统设计和分析。 4. 实证研究法:通过大量编码和测试,实现系统各项功能。 五、参考文献 本研究参考了涉及B/S架构、销售管理、客户行为分析等多个领域的硕士论文,以获取...

    开题报告ssm007亚盛汽车配件销售业绩管理统+jsp开题.doc

    - **经验总结法**:结合个人经验和导师指导,对开发过程进行归纳和分析。 - **实证研究法**:通过实际编码和测试,验证和实现系统功能。 8. **参考文献**:列举的参考文献主要涉及基于B/S的管理系统设计、项目...

    J2EE全实例教程 doc格式

    该示例可能会介绍如何使用Servlet和JSP来创建一个简单的Web应用,包括用户登录、显示个人信息等功能。这将涉及到Servlet如何接收HTTP请求、处理数据以及返回响应给客户端的过程。 #### 示例2:使用EJB进行业务逻辑...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007.pdf

    - **JNDI/LDAP**:讨论命名和服务发现接口以及轻量目录访问协议。 - **RMI**:研究远程方法调用的基础和实现细节。 - **EJB**:介绍企业级Java Beans的作用域、生命周期和部署模型。 - **JMS**:分析Java消息...

Global site tag (gtag.js) - Google Analytics