J2EE中的JNDI
2015-05-31 17:17
190 查看
JNDI是用于访问不同命名和目录服务的统一API接口。
功能:它可以用来提供查找服务。如:Web应用环境变量、EJBs和他们的环境变量,通过DataSources的数据库连接池等。比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API就可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置就行。增加了程序的灵活性,也给系统解耦了。
但不能将它当做数据库来使用。JNDI架构提供了一个标准的、与命名系统无关的API,这个API构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问LDAP、RMI、DNS还是其他的目录服务,这都没有关系。换句话说,JNDI与任何特定的目录服务实现无关,你可以使用任何目录,只要你拥有相应的服务提供程序接口(或驱动程序)即可
![](https://img-blog.csdn.net/20150531170214131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXFwbHc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
从服务器端对象连接到JNDI:
Context ctx=new InitialContext();//创建一个InitialContext
从任何一个地方连接到JNDI:
1.创建Environment对象
weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();
2.填写Environment:
env.setProviderurl("t3://127.0.0:7001");//WebLogic Server的位置
env.setSecurityPrincipal("system");//安全信息
env.setSecurityCredentials("PassWord');
context ctx=env.getInitialContext();//使用Environment对象创建InitialContext
创建一个用于绑定对象的新SubContext
1.创建Environment对象:
Context ctx=env.getInitialContext();//首先必须获得存在的Subcontext或InitialContext
2.填写Environment:
Context subcontext=ctx.createSubcontext("newSubcontext");//在当前的Context下创建新的Subcontext
subcontext Subcontext.rebind("boundObject",object);//绑定一个对象
subcontext.close();//当结束时经常关闭访问的资源
ctx.close();
其他的连接到JNDI的方法有:使用'Contstant'Properties名和Hashtable类
使用‘Hardcoded’名和Properties类
一些JNDI环境属性:
![](https://img-blog.csdn.net/20150531170401933?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXFwbHc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
jndi.properties文件为所以的Initial Contexts设置默认的属性
它的搜索次序:先CLASSPATH然后$JAVA_HOME/lib/
用Lookup()从JNDI树获得对象,通过lookup()返回的对象必须映射到他们合适的类型
远程绑定对象:
绑定到远程命名服务的对象必须是序列化的;访问命名服务时,对象是采用复制机制
![](https://img-blog.csdn.net/20150531170813531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXFwbHc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们所有人每天都在不自知的情况下使用命名服务。例如,当你在浏览器中输入URL http://java.sun.com 时,域名系统(Domain Name System ,DNS)将这个以符号表示的URL转换为一个通信标识符(IP地址)。在命名系统中,对象的范围可以从位于DNS记录中的名称变动到应用程序服务器中的企业JavaBeans组件(Enterprise JavaBeans Components
,EJBs),还可以到轻量级目录访问协议(Lightweight Directory Access Protocol ,LDAP)中的用户配置文件。
功能:它可以用来提供查找服务。如:Web应用环境变量、EJBs和他们的环境变量,通过DataSources的数据库连接池等。比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API就可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置就行。增加了程序的灵活性,也给系统解耦了。
但不能将它当做数据库来使用。JNDI架构提供了一个标准的、与命名系统无关的API,这个API构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问LDAP、RMI、DNS还是其他的目录服务,这都没有关系。换句话说,JNDI与任何特定的目录服务实现无关,你可以使用任何目录,只要你拥有相应的服务提供程序接口(或驱动程序)即可
从服务器端对象连接到JNDI:
Context ctx=new InitialContext();//创建一个InitialContext
从任何一个地方连接到JNDI:
1.创建Environment对象
weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();
2.填写Environment:
env.setProviderurl("t3://127.0.0:7001");//WebLogic Server的位置
env.setSecurityPrincipal("system");//安全信息
env.setSecurityCredentials("PassWord');
context ctx=env.getInitialContext();//使用Environment对象创建InitialContext
创建一个用于绑定对象的新SubContext
1.创建Environment对象:
Context ctx=env.getInitialContext();//首先必须获得存在的Subcontext或InitialContext
2.填写Environment:
Context subcontext=ctx.createSubcontext("newSubcontext");//在当前的Context下创建新的Subcontext
subcontext Subcontext.rebind("boundObject",object);//绑定一个对象
subcontext.close();//当结束时经常关闭访问的资源
ctx.close();
其他的连接到JNDI的方法有:使用'Contstant'Properties名和Hashtable类
使用‘Hardcoded’名和Properties类
一些JNDI环境属性:
jndi.properties文件为所以的Initial Contexts设置默认的属性
它的搜索次序:先CLASSPATH然后$JAVA_HOME/lib/
用Lookup()从JNDI树获得对象,通过lookup()返回的对象必须映射到他们合适的类型
远程绑定对象:
绑定到远程命名服务的对象必须是序列化的;访问命名服务时,对象是采用复制机制
我们所有人每天都在不自知的情况下使用命名服务。例如,当你在浏览器中输入URL http://java.sun.com 时,域名系统(Domain Name System ,DNS)将这个以符号表示的URL转换为一个通信标识符(IP地址)。在命名系统中,对象的范围可以从位于DNS记录中的名称变动到应用程序服务器中的企业JavaBeans组件(Enterprise JavaBeans Components
,EJBs),还可以到轻量级目录访问协议(Lightweight Directory Access Protocol ,LDAP)中的用户配置文件。
相关文章推荐
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- J2EE项目代码编写规范分享
- Spring的JNDI数据源连接池配置
- EJB技术,够重!够杂!
- 一个基于J2EE的web应用程序运行起来需要什么?
- Nginx + Tomcat Windows下的负载均衡配置
- j2ee异常拦截
- Hibernate数据查询
- 什么是j2ee
- zz j2ee系统剖析
- J2EE标准
- J2ME,J2EE,J2SE简介、对比
- 漫谈:选择Java Web开发真不容易 技术族谱
- 使用 AppFuse 快速构建 J2EE 应用
- 简析J2EE应用程序数据库类设计模式
- j2ee试题
- 配置 jndi
- 常用正则表达式
- 【杭州】【大型互联网公司】资深java开发工程师【猎头职位】