怎么样使用Weblogic服务器中的JNDI?
Weblogic服务器中的JNDI概述
在一个企业中,命名服务为你的应用程序在网络上定位对象提供了一种方法。一个命名服务将对象和名称联系在了一起,并且可以通过它们指定的名称找到相应的对象。(RMI注册就是命名服务的一个很好的例子。)
JAVA命名和目录接口(JNDI)是一个为JAVA应用程序提供命名服务的应用程序编程接口(API)。JNDI是SUN微系统的J2EE技术中的一个完整的组件。它支持通过一个单一的方法访问不同的新的和已经存在的服务的方法。这种支持允许任何服务提供商执行通过标准服务提供商接口(SPI)协定插入JNDI框架。另外,JNDI允许WEBLOGIC服务器上的JAVA应用程序通过插入适当的服务提供者来访问象LDAP这样的标准化方式的外部目录服务。
WEBLOGIC服务器执行JNDI提供的方法包括:
l 使客户端访问WEBLOGIC命名服务。
l 使对象在WEBLOGIC命名空间有效。
l 从WEBLOGIC命名空间重新得到对象。
每个Weblogic服务器簇都由一个复制的簇范围的JNDI树支持,而这个JNDI树提供了进入每个复制的RMI和EJB对象的路口。当表示簇的JNDI树作为一个单一的全局树出现在客户端时,这个包含簇范围服务的树实际上是在簇中交叉的每个Weblogic服务器。关于更多的信息,参看“在簇环境中使用Weblogic JNDI”。
Weblogic服务器JNDI提供的完整的命名服务可以用在许多其他的Weblogic服务中。例如,Weblogic RMI能通过标准RMI方法和JNDI方法绑定和访问远程对象。
另外对于JNDI的标准JAVA接口,Weblogic服务器提供了它的实现,即weblogic.jndi,WLInitialContextFactory 使用了标准JNDI接口。在你的应用程序代码中,你不需要直接实例化这个类。相反,你可以使用标准的javax.naming.InitialContext类,并且设置适当的哈西表属性,象在“为初始化上下文设置JNDI的环境属性”那部分所讲的。正如在JNDI的JAVADOC中描述的,所有的互动作用都是通过javax.naming.Context接口来完成。
Weblogic JNDI编程
l 以下几部分描述了Weblogic JNDI编程,包括:
l 通过JAVA客户端使用Weblogic JNDI
l 为初始化上下文设置JNDI的环境属性
l 用上下文查找命名对象
l 用命名对象得到对象的引用
l 关闭上下文
l 在簇环境中使用Weblogic JNDI
l
通过JAVA客户端使用Weblogic JNDI
Weblogic服务器的JNDI服务提供者接口(SPI)提供了一个InitialContext(初始化上下文)实现,允许远程JAVA客户端连接Weblogic服务器。客户端可以指定标准的JNDI环境属性来确定一个特殊的Weblogic服务器部署和为Weblogic服务器的登陆指定相关的连接属性。
为了使Weblogic服务器参与一个会话,一个Java客户端必须能够为远程对象得到一个对象的引用,并且能在这个对象上调用相应的操作。为了实现这个目的,客户端应用程序代码必须完成下面的步骤:
1. 为初始化上下文设置JNDI环境属性。
2. 在Weblogic服务器上建立一个初始化上下文。
3. 用这个上下文在Weblogic服务器的命名空间查找一个命名的对象。
4. 用这个命名的对象为远程对象得到一个引用并且在这个远程对象上调用相应的操作。
5. 完成这个会话。
接下来的部分讨论为连接一个Weblogic服务器,JNDI客户端要做的工作。有关在一个Weblogic服务器簇中使用JDNI的信息请参看“在簇环境下从客户端使用Weblogic JNDI”。
在你在一个Weblogic服务器环境中用JNDI访问一个对象之前,你必须将这个对象装入Weblogic服务器的JNDI树中。在JNDI树中装入对象的用法说明请参看“管理JNDI”。
为初始化上下文设置JNDI的环境属性
任何一个Java客户端应用程序都必须执行的第一个任务就是创建环境属性。初始化上下文工厂使用不同的属性为不同的环境订制其上下文。你既可以使用哈西表也可以使用set()方法设置这些属性。这些名称和值一一对应的属性决定了WLInitialContextFactory如何创建上下文。
在订制初始化上下文时要使用如下属性:
l Context.PROVIDER_URL----确定提供命名服务的Weblogic服务器的URL。默认值为 t3://localhost:7001。
l Context.SECURITY_PRINCIPAL----为认证的目的确定用户(即在Weblogic服务器安全领域定义的用户)的身份。除非此线程已经与Weblogic服务器用户相联系,否则此属性的默认值为客人用户。有关更多的信息,参看“用安全上下文与一个Weblogic用户建立联系”。
你可以在客户端和服务器上用相同的属性。如果你在服务器端对象上定义这个属性,则使用本地上下文。如果你在客户端或其他Weblogic服务器上定义这个属性,则这个上下文就代表一个运行在由Context.PROVIDER_URL属性确定的Weblogic服务器上的远程上下文。
下面的代码显示如何使用这两个获得上下文:
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,
"t3://localhost:7001");
try {
ctx = new InitialContext(ht);
// Use the context in your program
}
catch (NamingException e) {
// a failure occurred
}
finally {
try {ctx.close();}
catch (Exception e) {
// a failure occurred
}
}
其他的Weblogic属性对于配置环境参数和控制如何把对象绑定到簇的JNDI树上都是有效的。注意这种绑定对于一个簇内的每一台服务器既可以复制也可以不复制JNDI树。这些属性是由weblogic.jndi.WLContext类中的常量所确定的。有关与JNDI相关的簇问题,参看“在簇环境中从客户端使用Weblogic JNDI”。
本文地址:http://www.45fan.com/dnjc/68189.html