JavaTM 2 Platform
Standard Ed. 5.0

org.omg.CORBA
类 Context

java.lang.Object
  继承者 org.omg.CORBA.Context

public abstract class Context
extends Object

用于在 Request 操作中指定上下文对象的对象,上下文字符串在与请求调用一起被发送之前,必须在该指定的上下文对象中进行解析。Context 对象包含 NamedValue 对象形式的属性列表。这些属性表示关于客户端、环境或请求情形的信息,它们通常是一些可能不方便作为参数传递的属性。

Context 对象是通过先调用 ORB 方法 get_default_context,然后在默认上下文上调用 create_child 来创建的。

Context 对象中的每个属性都由一个 NamedValue 对象表示。属性名称包含在 NamedValue 对象的 name 字段中,与该名称关联的值包含在 Any 对象中,该 Any 已分配给 NamedValue 对象的 value 字段。

Context 属性可以表示要传播到服务器环境(并使其成为其隐含部分)的部分客户端环境或应用程序环境。(示例有窗口标识符或用户首选项信息)。一旦已经调用服务器(即传播属性之后),服务器可以使用 get_values 方法查询其 Context 对象来获得这些属性。

当操作声明中包括上下文子句时,stub 和 skeleton 将有一个为该上下文添加的额外参数。在进行操作调用时,ORB 将在已调用方法的 Context 对象参数中提供使用 IDL 在操作定义中指定的属性以及客户端的 Context 对象中存在的属性。

多个 Context 属性名称(字符串)通常是以 OMG IDL 标识符(或一系列以句点分隔的 OMG IDL 标识符)的形式出现的。单个 Context 属性名称模式可以是属性名称或后跟单个 "*" 的属性名称。没有结尾 "*" 的属性名称模式被认为只与它自己匹配。"<名称>*"形式的属性名称模式与任何以<名称>开头,且后跟零个或多个附加字符的属性名称匹配。

属性名称模式用在操作定义的 Context 子句中,作为 Context.get_values 方法的参数。

Context 对象可能被“链接”在一起,以完成特定默认行为。使用 create_child 方法创建的 Context 对象将与其父对象(创建该对象的 Context 对象)链接在一起,这意味着在搜索属性名称时,搜索子对象之后将搜索父对象。

在特定 Context 对象中定义的属性会在下一个较高级别有效地重写这些属性。通过指定起始范围并在调用 get_values 方法时使用标志 CTX_RESTRICT_SCOPE,可以限定在搜索属性时使用的范围。

可以指定一个 Context 对象来指定起始搜索范围。

从以下版本开始:
JDK1.2

构造方法摘要
Context()
           
 
方法摘要
abstract  String context_name()
          检索此 Context 对象的名称。
abstract  Context create_child(String child_ctx_name)
          创建一个 Context 对象,使用给定字符串作为其名称,并将此 Context 对象设置为其父对象。
abstract  void delete_values(String propname)
          从此 Context 对象中删除 name 字段与给定属性名称匹配的 NamedValue 对象。
abstract  NVList get_values(String start_scope, int op_flags, String pattern)
          检索 name 字段与给定名称或名称模式匹配的 NamedValue 对象。
abstract  Context parent()
          检索此 Context 对象的父对象。
abstract  void set_one_value(String propname, Any propvalue)
          创建一个 NamedValue 对象,并将它添加到此 Context 对象中。
abstract  void set_values(NVList values)
          在此 Context 对象中设置一个或多个属性值。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Context

public Context()
方法详细信息

context_name

public abstract String context_name()
检索此 Context 对象的名称。

返回:
Context 对象的名称

parent

public abstract Context parent()
检索此 Context 对象的父对象。

返回:
作为此 Context 父对象的 Context 对象

create_child

public abstract Context create_child(String child_ctx_name)
创建一个 Context 对象,使用给定字符串作为其名称,并将此 Context 对象设置为其父对象。

将新的 Context 对象链接到其父 Context 对象中。这意味着在搜索匹配属性名称时,如果在此上下文中没有发现匹配项,则将继续在父对象中进行搜索。如果该搜索还不成功,则继续在祖父对象(如果有)中进行搜索,依此类推。

参数:
child_ctx_name - 将设置为新 Context 对象名称的 String 对象
返回:
使用指定名称初始化的新建子 Context 对象

set_one_value

public abstract void set_one_value(String propname,
                                   Any propvalue)
创建一个 NamedValue 对象,并将它添加到此 Context 对象中。将新 NamedValue 对象的 name 字段设置为给定字符串;将 value 字段设置为给定 Any 对象;将 flags 字段设置为 0。

参数:
propname - 要设置的属性名称
propvalue - 用来设置属性值的 Any 对象。Any 对象的 value 字段包含将与给定 propname 关联的值;必须将 kind 字段设置为 TCKind.tk_string

set_values

public abstract void set_values(NVList values)
在此 Context 对象中设置一个或多个属性值。提供给此方法的 NVList 包含一个或多个 NamedValue 对象。在每个 NamedValue 对象中,name 字段用于保存属性名称,同时必须将 flags 字段设置为 0。NamedValue 对象的 value 字段包含一个 Any 对象,而该对象中又包含属性的值。因为该值始终是字符串,所以 Any 对象必须将其 TypeCodekind 字段设置为 TCKind.tk_string

参数:
values - 包含属性名称和要设置的关联值的 NVList
另请参见:
get_values(java.lang.String, int, java.lang.String), NamedValue, Any

delete_values

public abstract void delete_values(String propname)
从此 Context 对象中删除 name 字段与给定属性名称匹配的 NamedValue 对象。如果为 propname 提供的 String 对象具有结尾通配符 ("*"),则删除所有 name 字段与之匹配的 NamedValue 对象。始终将搜索范围限定为此 Context 对象。

如果未找到匹配属性,则返回异常。

参数:
propname - 要删除的属性名称

get_values

public abstract NVList get_values(String start_scope,
                                  int op_flags,
                                  String pattern)
检索 name 字段与给定名称或名称模式匹配的 NamedValue 对象。此方法允许使用通配符进行搜索,这意味着可能存在多个匹配项,所以可能返回多个值。如果在指示的级别上没有找到该属性,则将继续沿上下文对象树向上搜索,直到找到一个匹配项,或者已经搜索完链接中所有的 Context 对象。

如果没有发现匹配项,则返回错误,不返回任何属性列表。

参数:
start_scope - 指示上下文对象级别的 String 对象,将在该级别上启动对指定属性(例如 "_USER"、"_GROUP" 和 "_SYSTEM")的搜索。有效范围的名称是特定于实现的。如果忽略范围名称,则从指定上下文对象开始搜索。如果没有找到指定范围名称,则返回异常。
op_flags - 操作标志。可以指定的一个标志是 CTX_RESTRICT_SCOPE。如果指定此标志,则将搜索限定为指定的 start_scope 或此 Context 对象。
pattern - 将检索其值的属性名称。pattern 可以是名称或结尾带通配符 ("*") 的名称。
返回:
一个 NVList,它包含所有关联属性名称与给定名称或名称模式匹配的属性值(以 NamedValue 对象的形式存在)
另请参见:
set_values(org.omg.CORBA.NVList), NamedValue

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策