JNDI——J2EE规范(一)
来源:互联网 发布:西安财经行知怎么样 编辑:程序博客网 时间:2024/06/10 17:39
(1)概念
Java命名和目录接口
命名和目录服务把标识符和资源关联起来
(2)图解
JNDI是用于访问不同的命名和目录服务的统一API接口
(3)何时使用JNDI
JNDI是一种查找服务,用于查找:
Web应用环境变量
EJBs和它们的环境变量
通过DataSources的数据库连接池
JMS目标和连接工厂
其它服务
不要将JNDI当作数据库使用:
JNDI对象储存在内存中
访问JNDI对象与网络性能有关
(4)JNDI树
Initial Context,对象(叶子结点),Context(结点)
(5)连接到JNDI的方法
<1>不带参数
//从服务器端对象连接到JNDIContextctx = new InitialContext();
<2>跟Environment
weblogic.jndi.Environmentenv = new weblogic.jndi.Environment();env.setProviderurl("t3://127.0.0.1:7001");env.setSecurityPrincipal("system");env.setSecurityCredentials("PassWord");contextctx = env.getInitialContext();
创建Environment对象:
填写Environment:
WebLogicServer的位置
安全信息
使用Environment对象创建InitialContext
创建Subcontext
创建一个用于绑定对象的新Subcontext:
Contextctx = env.getInitialContext();Contextsubcontext = ctx.createSubcontext("newSubcontext");subcontext.rebind("boundObject",object);subcontext.close();ctx.close();
//首先必须获得存在的Subcontext或InitialContext
//在当前的Context下创建新的Subcontext
//绑定一个对象
//当结束时关闭访问的资源
<3>跟Hashtable
Hashtableenv = new Hashtable();env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");env.put(Context.PROVIDER_URL,"t3://localhost:7001");env.put(Context.SECURITY_PRINCIPAL,"system");env.put(Context.SECURITY_CRRDENTIALS,"PassWord");Contextctx = new InitalContext(env);
<4>使用Properties
Propertiesenv = new Properties();env.setProperty("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");env.setProperty("java.naming.provider.url","t3://192.2.56.102:7001");env.setProperty("java.naming.security.principal","system");env.setProperty("java.naming.security.credentials","PassWrod");Contextctx = new InitialContext(env);
(6)一些JNDI环境属性
(7)jndi.properties
jndi.properties文件为所有的InitialContexts设置默认的属性
jndi.properties文件的搜索次序:CLASSPATH,$JAVA_HOME/lib/
(8)从JNDI查找
Lookup()从JNDI树获得对象
通过lookup()返回的对象必须映射到它们合适的类型
importjavax.naming.*; try{ Contextic = new Context(); Objectobj; obj= ic.lookup("javax.transaction.UserTransaction"); UserTransactionut = (UserTransaction)obj; ut.begin(); ... ic.close(); }catch(NamingException e) {...}
(9)远程绑定对象
绑定到远程命名服务的对象必须是序列化的
访问命名服务时,对象是采用复制机制
(绑定的对象是序列化到命名服务器的,查找的对象是序列化到客户的)
(10)一个Binding示例
public static Context getInitialContext()throws NamingException { Environmentenv = new Environment(); env.setProviderUrl("t3://localhost:7001"); env.setSecurityPrincipal("system"); env.setSecurityCredentials("weblogic"); Contextcontext = env.getInitialContext(); returncontext;}Context ctx = getInitialContext(); //获得initial contextBank myBank = new Bank(); //创建名为Bank的对象ctx.rebind("theBank", myBank); //把对象绑定到JNDI树ctx.close();
(11)一个Un-Binding示例
public static Context getInitialContext()throws NamingException { Environmentenv = new Environment(); env.setProviderUrl("http://localhost:7001"); env.setSecurityPrincipal("system"); env.setSecurityCredentials("weblogic"); Contextcontext = env.getInitialContext(); returncontext;}Context ctx = getInitialContext(); //获得initial contextctx.unbind("theBank"); //解除绑定到“theBank”的对象ctx.close();
(12)可能的命名异常
当与JNDI交互时可能发生的例外i:
AuthenticationException认证
CommunicationException通信
InvalidNameException无效名称
NameNotFoundException名字没有找到
NoInitialContextException没有连接initialcontext
- JNDI——J2EE规范(一)
- j2ee规范——JNDI
- J2EE规范——JNDI
- J2EE规范——JNDI
- J2EE规范——JNDI
- Java华丽转身 —— J2EE规范(一) JNDI Java Naming and Directory Interface
- Java华丽转身 —— J2EE规范(一) JNDI Java Naming and Directory Interface
- J2EE技术(一)——JNDI
- J2EE技术规范(一)——JNDI
- J2EE的13个规范之(一) JNDI
- J2EE规范(二)JDBC与JNDI
- J2EE 13规范(2)-JNDI
- J2EE规范总结--JNDI
- 【J2EE规范】什么是JNDI
- J2EE——JNDI
- J2EE——JNDI
- j2ee规范之jdbc jndi
- J2EE规范JDBC与JNDI
- Struts1.x的validator框架使用
- ChainMapper和ChainReducer
- 事务: spring+hibernate实现事务回滚及其他
- JQuery.LazyLoad 实现图片懒加载
- J2EE开发使用cookie
- JNDI——J2EE规范(一)
- Android 体系结构
- HillTop链接分析算法详解
- 上传文件,is_uploaded_file($_FILES['imgfile']['tmp_name']) 一直返回false
- JAXB(.xsd文件到java类的映射)
- VS2010:error C3083: 'Windows': the symbol to the left of a '::' must be a type
- Google Map 简单应用
- 在 Xcode 4.3 中使用静态库的方法。
- Android手机进行无线调试