`
zc985552943
  • 浏览: 291007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11866
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:27148
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:16005
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:27235
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13676
社区版块
存档分类
最新评论

01_Java通信_JNDI_概念

阅读更多

在S2SH开发中会使用的Spring来注入数据源,在本地开发时我们使用<bean>注入数据源

	<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<property name="maxActive" value="${jdbc.maxActive}" />
	</bean>

 

上面的配置文件取自Spring中,有了dataSourceSpied就可以将这个数据源引入到hibernate的sessionFactory

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<!-- 配置sessionFactory中要用的数据源 -->
		<property name="dataSource" ref="dataSourceSpied" />
		...
	</bean>

 

但是在生产上,或者测试环境数据库的链接、用户名、密码都是很重要的信息,不能直接暴露在外面。所以在生成、测试环境我们会使用JNDI这种服务来得到数据库链接

<jee:jndi-lookup id="dataSourceSpied" jndi-name="dataSourceDBaihis" />

然后再web服务器上创建数据源。我们使用weblogic11这种web服务器,在上面创建数据源,数据源的名字叫做“dataSourceDBaihis”这样在Spring配置文件中使用:

<jee:jndi-lookup id="dataSourceSpied" jndi-name="dataSourceDBaihis" />

就能得到数据源。

那么什么叫做JNDI呢?

JNDI:Java Naming and Directory Interface,Java命名和目录接口

是一种命名服务的抽象机制,用通俗的话讲就是:我知道在网络上有一个对象,并且知道这个对象的名字和网络地址,那么我可以通过JNDI来获得这个网络上的对象

非通俗解释:

JNDI的目的是用来查找J2EE服务器的注册资源。只要该对象在命名服务器上注册过,且你知道命名服务器的地址和该对象在命名服务器上注册的JNDI名。这样你就可以在无需知道对象位置的情况下获取和使用对象。

拿上面介绍的数据源来说明:

项目中没有正在实例化数据源,只是通过jndi-lookup呼叫了一个数据。我知道数据源的名字,因为项目部署在weblogic上,所以项目自然知道这个数据源的地址。所以项目知道了数据源对象的地址和数据源的名称,这样就可以通过JNDI获得这个数据,并注入到hibernate中。

 

Java对JNDI只提供接口,使用JNDI只需要用到JNDI接口而不必关心具体实现。这就类似与Java的JDBC,Java也只是提供了JDBC的接口,各个数据库厂家提供接口的实现。开发过程中程序员不用关心厂家是如何实现的,只需要面向接口编程即可。

以上完全是停留在概念上理解什么是JNDI,下节将要介绍两个简单的例子,这样我们可以更加清晰的认识到JNDI是如何获得远程对象的。先在这里做个小铺垫,因为Java只提供了JNDI的接口,所以在写demo过程中要用到厂家提供的实现。我在这里列举了各个厂家提供的链接和工厂类:

//jboss:
Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"
Context.URL_PKG_PREFIXES, "org.jboss.naming"
Context.PROVIDER_URL, "localhost:1099"

//weblogic:
Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"
Context.PROVIDER_URL, "t3://localhost:7001"

//apusic(金蝶):
Context.INITIAL_CONTEXT_FACTORY, "com.apusic.jndi.InitialContextFactory"
Context.PROVIDER_URL, "rmi://localhost:6888"

//WebSphere:
Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"
Context.PROVIDER_URL, "iiop://localhost:900"


//J2EE  SDK(J2EE  RI):
Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory"
Context.PROVIDER_URL, "iiop://127.0.0.1:1050"

//SilverStream:
Context.INITIAL_CONTEXT_FACTORY, "com.sssw.rt.jndi.AgInitCtxFactory"
Context.PROVIDER_URL, "sssw://localhost:80"

//OC4J:
Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory"
Context.PROVIDER_URL, "ormi://127.0.0.1/"

//WAS5:
Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"
Context.PROVIDER_URL, "iiop://localhost:2809"

 解释一下上述代码:

Context.INITIAL_CONTEXT_FACTORY:指定到目录服务的连接工厂
Context.PROVIDER_URL:目录服务提供者URL

2
2
分享到:
评论

相关推荐

    The_Java_EE5_Tutorial.rar_Java ee5 CHM_java ee5 tutorial_java e

    10. **Java Naming and Directory Interface (JNDI)**:提供查找和管理资源的接口,常用于在Java EE应用中查找EJB、JMS队列等。 11. **Java Management Extensions (JMX)**:JMX用于管理和监控Java应用程序,包括...

    Java_Technology_Concept_Map.zip_java map

    Java还有一套强大的标准库,包括JDBC(Java Database Connectivity)用于数据库操作,JAXP和DOM/SAX解析器处理XML数据,以及JNDI(Java Naming and Directory Interface)用于目录服务。 最后,Java的开发工具和...

    java JNDI总结

    EJB是J2EE架构中的一个重要组成部分,而JNDI则是EJB之间通信的基础之一。通过JNDI,EJB可以找到并调用其他EJB或其他服务。 ##### 1. EJB中的JNDI使用场景 在EJB环境中,JNDI通常用于以下几个方面: - **查找资源*...

    技术专栏 _ 深入理解JNDI注入与Java反序列化漏洞利用.pdf

    在深入探讨JNDI注入与Java反序列化漏洞之前,我们需要对几个关键概念有所了解,这包括Java远程方法调用(RMI)、Java名称目录接口(JNDI)、Java远程消息交换协议(JRMP)、以及序列化和反序列化。 RMI是Java环境中...

    RMI.rar_Java会议室_rmi _会议室

    2. 客户端通过JNDI(Java Naming and Directory Interface)查找RMI注册表,获取远程对象的引用。 3. 客户端使用获得的引用调用远程方法,RMI系统负责将方法调用转化为网络通信。 4. 服务器端接收到请求,执行相应的...

    skzn.rar_java中backnapse_skin

    首先,让我们深入理解Java中的皮肤(Skin)概念。在软件开发中,皮肤通常是指应用程序的视觉样式和布局,它可以被更换以改变应用的外观。BackNapse Skin可能是特定于Winnap的皮肤库或框架,它允许开发者轻松地定制和...

    JAVA-container.rar_JAVA Container

    5. **JMS(Java Message Service)**:介绍消息队列的概念,JMS API的使用,以及如何在Java容器中实现异步通信。 6. **部署与配置**:可能包括WAR和EAR文件的打包方式,以及如何将这些文件部署到不同的Java容器中。...

    JAVA-EE.zip_JAVA EE

    3. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一个统一的接口,用于查找和管理分布式环境中的资源,如数据库连接池、邮件服务器等。 4. **EJB(Enterprise JavaBeans)**:EJB是Java EE中的核心...

    J2EE.zip_J2EE_Java开发笔试题_笔试_笔试题

    4. **JNDI(Java Naming and Directory Interface)** - **JNDI**:它提供了一组API,使得应用可以查找和绑定全局资源,如数据库连接池、邮件服务器等。 5. **JTA(Java Transaction API)与JMS(Java Message ...

    jdbc3.0doc.zip_java jdbc

    通过学习这个压缩包中的文档,开发者可以深入了解JDBC 3.0的核心概念,掌握如何使用Java与数据库进行高效、安全的通信,这对于开发企业级的数据库应用至关重要。同时,结合实际的项目实践,可以更好地运用这些知识,...

    北大青鸟NTC_JavaPPT

    10. **第10章:网络编程** - Socket编程的基本概念,TCP和UDP协议的区别,以及如何创建基于Java的网络通信程序。 11. **第11章:数据库编程** - JDBC介绍,连接数据库,执行SQL语句,结果集的处理,以及事务处理。 ...

    java函数速查中文版.rar_java docs

    10. **其他**:还包括XML解析(如JAXB、DOM、SAX)、数据库访问(JDBC)、JNDI(Java Naming and Directory Interface)服务、JMS(Java Message Service)消息传递、JTA(Java Transaction API)事务管理等。...

    java-rmi-server.rar_Java RMI_rmi _服务器

    Java Remote Method Invocation(RMI)是Java平台提供的一种用于在分布式环境中进行对象间通信的技术。RMI服务器允许一个Java对象在远程机器上执行方法,使得客户端可以像调用本地对象一样调用远程对象,极大地简化...

    java认证课程..netscreen公司出的中文参考资料.rar_JAVA认证_site:www.pudn.com_认证

    12. **Java EE相关知识**(如果针对的是更高级别的认证):包括Servlet、JSP、JPA、EJB、JMS、JNDI等企业级开发技术。 通过Netscreen公司的这份中文参考资料,学习者可以系统地复习这些关键知识点,并进行实战练习...

    java面试题_Java程序员面试之葵花宝典

    - EJB基于Java EE规范,如JNDI(Java Naming and Directory Interface)用于查找和绑定,JTA(Java Transaction API)处理事务,JMS(Java Message Service)实现异步通信。 这些知识点构成了Java程序员面试的基础...

    JNDI调用分布式EJB3 通用接口

    在IT行业中,Java Naming and Directory Interface (JNDI) ...总的来说,JNDI调用分布式EJB3是一个涉及网络通信、分布式系统和Java企业级开发的重要主题。理解这一过程对于开发和维护大型、可扩展的企业应用至关重要。

    JNDI 命名和目录服务

    【JNDI命名和目录服务】是JAVA编程中的一项核心技术,它提供了对各种命名和目录服务的统一访问接口。JNDI,全称为Java Naming and Directory Interface,它不是具体的命名或目录服务,而是一组API,使得Java程序能够...

    jndi配置

    JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的API,它为各种服务提供了一个统一的接口。在Java应用程序中,JNDI主要用来查找和绑定资源,例如数据库连接池、邮件服务器配置等。...

    java_ee_sdk-5-javadocs

    8. **JNDI(Java Naming and Directory Interface)**:JNDI是Java平台中的命名和目录服务接口,允许应用查找和绑定资源,如EJB、数据源等。 9. **JAF(JavaBeans Activation Framework)**:JAF帮助应用识别和处理...

Global site tag (gtag.js) - Google Analytics