- 浏览: 413579 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
liyuanhoa_:
...
struts2.0中struts.xml配置文件详解 -
chenmingde:
...
Velocity应用(一) -
weizhikai_ai:
第二十六,当一个线程进入一个对象的一个synchronized ...
Java常见面试题(含答案) -
Aurora_lr:
...
Spring宠物商店学习笔记(一) - -
zs911zs:
all copy from http://www.iteye ...
Mule入门文档
Java术语
英文全称是:Java Naming and Directory Interface
术语解释:一组帮助做多个命名和目录服务接口的API。
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JNDI程序包:
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
}
catch(NamingException ne){
...
}
JNDI与JMS:
消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
代码示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
...
}
catch(NamingException ne){
...
}
访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
Attribute attr =
directory.getAttributes(personName).get("email");
String email = (String)attr.get();
通过使用JNDI让客户使用对象的名称或属性来查找对象:
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
浏览命名空间:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
参考资料:
http://java.sun.com/products/jndi/examples.html
http://java.sun.com/products/jndi/serviceproviders.html
常用的JNDI操作:
常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration list(String sName);
代码示例:重新得到了名称、类名和绑定对象。
NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}
英文全称是:Java Naming and Directory Interface
术语解释:一组帮助做多个命名和目录服务接口的API。
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JNDI程序包:
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
}
catch(NamingException ne){
...
}
JNDI与JMS:
消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
代码示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
...
}
catch(NamingException ne){
...
}
访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
Attribute attr =
directory.getAttributes(personName).get("email");
String email = (String)attr.get();
通过使用JNDI让客户使用对象的名称或属性来查找对象:
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
浏览命名空间:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
参考资料:
http://java.sun.com/products/jndi/examples.html
http://java.sun.com/products/jndi/serviceproviders.html
常用的JNDI操作:
常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration list(String sName);
代码示例:重新得到了名称、类名和绑定对象。
NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}
发表评论
-
java关键字native,volatile,transient
2009-02-25 15:12 13661.volatile:为了获得最佳速度,java允许线程保存共 ... -
quartz+spring
2009-02-12 14:48 3359Quartz 是一个强大的企业级 Schedule 工具,也是 ... -
Java虚拟机(JVM)参数配置说明
2009-01-08 16:02 2594在Java、J2EE大型应用中,JVM非标准参数的配置直接关系 ... -
@SuppressWarnings 详解
2009-01-08 15:27 977@SuppressWarnings J2SE 提供的最后一个 ... -
批量反编译java类文件
2009-01-08 10:30 1562所使用的软件是 DJ Java Decompiler 3.7。 ... -
LDAP定义
2008-12-23 10:20 1181LDAP是轻量目录访问协议 ... -
JMS总结和参考资料
2008-12-22 17:33 1814结束语 第 1 页(共3 页) 本教程提供了对 Ja ... -
JMS--Pub/Sub编程
2008-12-22 17:27 1087相同又不同 第 1 页(共1 页) 附录中有这两个 ... -
JMS--Pub/Sub接口
2008-12-22 17:24 1888介绍 第 1 页(共7 页) 现在让我们来查看 Pub/s ... -
JMS点对点编程
2008-12-22 17:15 1633介绍 第 1 页(共10 页) ... -
JMS点对点接口
2008-12-22 17:03 1484介绍 第 1 页(共8 页) ... -
JMS用公用接口进行客户机编程
2008-12-22 17:01 968绍 第 1 页(共11 页) 在这一节中,我们将查看 ... -
JMS公用接口
2008-12-19 18:01 1072在这一节中,我们将介绍 JMS 客户机编程的每一个重要 JMS ... -
JMS学习教程概述
2008-12-19 17:55 3119应用程序 第 1 页(共15 页) http://liy ... -
Java 编程的动态性,第 8 部分: 用代码生成取代反射
2008-12-18 11:52 1000运行时代码生成为获得 ... -
Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码
2008-12-18 11:51 1250Apache BCEL 让您深入 JVM 汇编语言进行类操作的 ... -
Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
2008-12-18 11:50 1121用 Javassist 进行字节码 ... -
Java 编程的动态性,第 5 部分: 动态转换类
2008-12-18 11:48 1050学习如何在使用 Javassist ... -
Java 编程的动态性, 第四部分: 用 Javassist 进行类转换
2008-12-18 11:47 1048用 Javassist 转换字节码中的方法 文档 ... -
Java 编程的动态性,第3部分: 应用反射
2008-12-18 11:18 829为命令行参数构建一个框架 文档选项 打印本 ...
相关推荐
本篇文章将详细介绍如何使用JNDI来定义Oracle数据源,这对于构建可扩展且高效的Web应用程序至关重要。 一、JNDI数据源概述 JNDI数据源配置是J2EE环境中管理数据库连接的一种方式。数据源是一种容器管理的资源,由...
3. **JNDI数据源配置:** 数据源通常在服务器的配置文件中定义,例如在Tomcat的`context.xml`中。配置完成后,应用可以通过JNDI查找,如`Context初始化参数`来获取数据源,这可以避免硬编码数据库连接信息。 **SSH...
2. Tomcat配置:在Tomcat的`conf/server.xml`文件中,需要添加一个GlobalNamingResources下的DataSource元素,定义JNDI数据源。例如: ```xml ... type="javax.sql.DataSource" driverClassName=...
数据源的JNDI名称会在这些配置文件中定义,以便应用可以通过JNDI查找服务。例如,一个常见的JNDI名称可能是`java:comp/env/jdbc/MyDataSource`。 使用JNDI的步骤大致如下: 1. **初始化初始上下文**:首先,我们...
JNDI本身并不提供任何实际的服务,而是定义了一套标准接口,由具体的服务提供商(如 LDAP、DNS、RMI等)来实现。这使得开发者可以灵活地选择适合应用的命名或目录服务。例如,EJB容器通常会提供一个Java企业版(Java...
配置数据源通常在`conf/server.xml`中进行,定义一个`Resource`元素,设置数据源的相关属性,如URL、用户名、密码等。应用中通过`InitialContext`查找这个JNDI名,即可获取到数据源实例,然后通过数据源获取数据库...
1. **javax.naming** 和 **javax.naming.directory**:这是Java标准版(Java SE)提供的核心JNDI API,它们定义了用于操作命名和目录服务的基本接口和类。 2. **javax.sql.DataSource**:这是Java数据库连接(JDBC...
1. **设置InitialContext的环境属性**:通过配置文件或代码的方式定义环境属性,包括JNDI的实现类、提供商URL、认证信息等。 2. **创建InitialContext对象**:根据设置好的环境属性创建InitialContext对象。 3. **...
局部JNDI则是在每个Web应用的上下文中定义,配置文件通常位于`WEB-INF/web.xml`。局部JNDI资源只对当前Web应用可见,提供了一种灵活的资源隔离方式。比如,为某个特定应用定义数据源,可在`web.xml`中写入: ```xml...
1. **加密步骤**:首先,使用AES算法和一个预先定义的密钥(需要妥善保管)对数据库密码进行加密,得到密文。 2. **配置JNDI**:将加密后的密码作为JNDI的值,例如,我们可以在Tomcat的context.xml中创建一个JNDI...
接下来,在应用的`WEB-INF/web.xml`文件中,我们需要添加`<resource-ref>`元素来定义数据源的引用。例如: ```xml <description>Resource reference to a factory for java.sql.Connection instances that may be...
1. **服务器配置**:在Java EE服务器的配置文件(如Tomcat的context.xml或server.xml)中定义JNDI资源。 2. **应用配置**:在Web应用的web.xml文件中,可以通过`<resource-ref>`元素声明对JNDI资源的引用。 3. **...
然后,定义了一个实现了`Remote`接口的`RemoteDate`类,并将其绑定到了JNDI中。之后可以通过如下方式查询该对象: ```java InitialContext ctx = new InitialContext(); Date startTime = (Date) ctx.lookup("java:...
### JNDI Java操作示例解析 #### 一、引言 JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的API。它提供了一种查找和定位应用程序所需的资源(如数据库连接、消息队列、EJBs等)...
在上面的配置中,我们定义了一个名为 `jdbc/JNDIDatabase` 的 JNDI 资源,该资源是一个数据库连接池,使用 `com.mysql.jdbc.Driver` 驱动程序连接到 `localhost:3306` 的 MySQL 实例。 使用 JNDI 资源 在 Java ...
4. **创建映射文件** - 编写 Emp.xml,这是与 Emp.java 类映射的 SQL 映射文件,定义 SQL 语句及其结果集映射。 5. **初始化 SqlMapClient** - 在代码中创建 SqlMapClient 实例,它是 Ibatis 的入口点,用于执行 ...
在这个配置文件中,`jndi-name`指定了数据源的JNDI名称,`connection-url`则定义了数据库的连接地址等信息。 在应用程序中,可以使用以下代码来获取这个数据源: ```java Context ctx = new InitialContext(); ...
JNDI并不提供命名服务,而是定义了访问这些服务的标准API。 - **Directory Service**:目录服务,它扩展了命名服务,除了名字到对象的映射外,还提供了属性的存储,比如用户信息、配置信息等。 - **Naming Context**...
例如,在Tomcat中,可以在`server.xml`或`context.xml`中定义一个`<Resource>`标签来创建一个数据源,并为其指定一个唯一的JNDI名称。 2. **Spring的JNDI查找配置**: - 在Spring应用上下文中,使用`jee:jndi-...