示例:通过设置提供程序 URL 属性获取初始上下文

通常情况下,Java™ 命名和目录接口 (JNDI) 客户机应该假设已经配置正确的环境,因此无需明确地设置属性值并将其传递到 InitialContext 构造函数。 但是,JNDI 客户机可能需要访问不是其环境中标识的名称空间。在这种情况下,需要显式地设置 InitialContext 构造函数使用的 java.naming.provider.url(提供程序 URL)属性。提供程序 URL 包含引导服务器信息,初始上下文工厂可以用它来获取初始上下文。直接传递给 InitialContext 构造函数的任何属性值都优先于在环境的其他地方找到的那些相同的属性设置。

您可以对 WebSphere® Application Server 初始上下文工厂使用两种不同的提供程序 URL 格式:
  • CORBA 对象 URL
  • IIOP URL

CORBA 对象 URL 比 IIOP URL 更灵活,并且是建议要使用的 URL 格式。CORBA 对象 URL 是 OMG CosNaming 可互操作的命名规范的一部分。例如,corbaname URL 可以包含初始上下文和查找名信息,并且可以用作查找名而不需要显式地获取另一个初始上下文。IIOP URL 是旧的 JNDI 格式,但是 WebSphere Application Server 初始上下文工厂仍支持该 URL。

下面的示例说明这些 URL 的使用。

使用 CORBA 对象 URL

本示例显示 CORBA 对象 URL。

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "corbaloc:iiop:myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...

使用具有多个名称服务器地址的 CORBA 对象 URL

CORBA 对象 URL 可以包含多个引导地址。您可以在尝试从服务器集群获取初始上下文时使用此功能。您可以为 URL 中集群中的所有服务器指定引导地址。如果至少有一个服务器在运行,那么消除单点故障,此操作将会成功。不保证将以地址列表中列出的任何特定顺序进行处理。例如,即使列表中的第一个引导地址中的服务器可用,您还是可以使用第二个引导地址获取初始上下文。

解析为非 z/OS 系统上的服务器的多地址提供程序 URL 不能包含 Node Agent 进程的引导地址。这是因为引导进入 Node Agent 的过程返回了不支持 WLM 的初始上下文。因此,不会使用 WLM。而是,URL 应该只包含同一集群的成员的引导地址,以使初始上下文支持 WLM。如果 URL 包含多个集群的引导地址,那么可能会引起不正确的行为。指定的名称可能无法解析,或者在所有集群中都解析为同一个对象。在解析为 z/OS® 操作系统上运行的服务器时,URL 可以包含 Node Agent 进程的引导地址,这是因为,在 z/OS 上,Node Agent 将返回支持 WLM 的初始上下文。

以下是具有多个地址的 corbaloc URL 的示例。

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
// All of the servers in the provider URL below are members of
// the same cluster.
env.put(Context.PROVIDER_URL,
     "corbaloc::myhost1:9810,:myhost1:9811,:myhost2:9810");
Context initialContext = new InitialContext(env);
...

使用来自非 WebSphere Application Server JNDI 实现的 CORBA 对象 URL

CosNaming JNDI 插件实现的初始上下文工厂(除 WebSphere Application Server 初始上下文工厂之外)很可能使用对象键 NameService 获取初始上下文。使用这种上下文工厂从 WebSphere Application Server 名称服务器获取初始上下文时,初始上下文是单元根上下文。由于与服务器相关联的系统工件(例如 EJB Home)在服务器的服务器根上下文之下进行绑定,因此 JNDI 操作中使用的名称必须进行限定。如果您要使用相对名,确保初始上下文是在其下绑定目标对象的服务器根上下文。要让服务器根上下文作为初始上下文,用 NameServiceServerRoot 对象键指定 corbaloc 提供程序 URL。

本示例显示来自非 WebSphere Application Server JNDI 实现的 CORBA 对象类型 URL。本示例假设非 WebSphere Application Server JNDI 实现完全支持 CORBA 对象 URL。指定 NameServiceServerRoot 对象键,以将初始上下文指定为服务器的服务器根上下文。

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
      "com.somecompany.naming.TheirInitialContextFactory");
env.put(Context.PROVIDER_URL,
      "corbaname:iiop:myhost.mycompany.com:9810/NameServiceServerRoot");
Context initialContext = new InitialContext(env);
...

如果使用限定名,那么可以使用缺省键 NameService

使用 IIOP URL

IIOP 类型的 URL 是旧的格式,该格式的灵活性不如 CORBA 对象 URL。但是,仍支持此类型的 URL。以下示例显示作为提供程序 URL 的 IIOP 类型 URL。

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rnam_example_prop2
文件名:rnam_example_prop2.html