J2EE or J2SE? JNDI works with both(from javaworld)
欢迎大家指正!-----------------------------
J2EE or J2SE? JNDI works with both
JNDI(Java Naming and Directory Inte易做图ce), 允许应用通过一个通用的接口来访问各种命名和目录服务。下面的特征表征了JNDI的架构。如同JDBC(Java Database Connectivity),JNDI并不是一种服务,而是一套接口;它允许应用使用标准API来访问很多不同的目录服务供应商。尽管Sun公司提供了适配器,比如LADP、DNS和CORBA,以连接已有的目录服务供应商,但是就如同JDK包含JDBC一样,它包含了JNDI接口,但并不包含JNDI服务供应商。然而,您可以选择使用免费或者开源JNDI供应商中的一种到您的J2SE应用中去。
JNDI是整合J2EE应用的黏合剂。JNDI被设计用来支持具有较高动态组装和部署的那些应用,可以在不用重建整个系统的条件下经常的添加和更新各种组件。命名服务则通过作为一个组件注册中心来帮助组织企业级的应用。J2EE应用一般在如下一些方面使用JNDI:
# 在一个集中、分级数据库中储存应用配置信息
# 作为在不同应用组件间共享的活动对象的仓库,这些组件能够运行在不同的JVM或者不同的系统中
# 作为已有目录服务例如LDAP的接口(通过使用特别的方式来访问外部的服务)
象J2EE应用一样,更大、更多的动态J2SE应用将得益于由动态目录服务带来的松偶合以及动态绑定特点。
一个简单的JNDI例子
从JNDI命名空间中储存和回溯对象是简单和易懂的;首先,获得JNDI的命名上下文(naming context),然后,使用bind()和lookup()方法来储存和回溯对象,就象Listing 1中显示的那样:
Listing 1. Store and retrieve objects from a JNDI namespace
import javax.naming.*;
public void createName() throws NamingException {
Context context = new InitialContext();
context.bind("/config/applicationName", "MyApp");
}
public String getName() throws NamingException {
Context context = new InitialContext();
return (String) context.lookup("/config/applicationName");
补充:Jsp教程,J2EE/EJB/服务器