用于在 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 对象来指定起始搜索范围。