java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

org.omg.PortableInterceptor
接口 ClientRequestInterceptorOperations

所有超级接口:
InterceptorOperations
所有已知子接口:
ClientRequestInterceptor

public interface ClientRequestInterceptorOperations
extends InterceptorOperations

客户端的请求 interceptor。

请求 Interceptor 用于通过 ORB 在指定点截取请求/应答序列流,以便服务能够查询请求信息并操作在客户端和服务器之间传播的服务上下文。请求 Interceptor 主要用途是使 ORB 服务能够在客户端和服务器之间传输上下文信息。请求 Interceptor 有两种类型:客户端和服务器端。

编写客户端 Interceptor 需要实现 ClientRequestInterceptor 接口。

另请参见:
ClientRequestInfo

方法摘要
 void receive_exception(ClientRequestInfo ri)
          指示 interceptor 发生异常。
 void receive_other(ClientRequestInfo ri)
          允许 Interceptor 在请求引起了正常应答和异常之外的情况时查询可用信息。
 void receive_reply(ClientRequestInfo ri)
          允许 Interceptor 在从服务器返回后但在向客户端返回控件前查询信息。
 void send_poll(ClientRequestInfo ri)
          允许 Interceptor 在轮询获取应答序列的与时间无关的调用(Time-Independent Invocation,TII)时查询信息。
 void send_request(ClientRequestInfo ri)
          允许 Interceptor 在请求被发送到服务器前查询请求信息并修改服务上下文。
 
从接口 org.omg.PortableInterceptor.InterceptorOperations 继承的方法
destroy, name
 

方法详细信息

send_request

void send_request(ClientRequestInfo ri)
                  throws ForwardRequest
允许 Interceptor 在请求被发送到服务器前查询请求信息并修改服务上下文。

此截取点可能抛出系统异常。如果抛出异常,则不调用其他任何 Interceptor 的 send_request 操作。移除那些 Flow Stack 上的 Interceptor 并调用其 receive_exception 截取点。此截取点也可能抛出 ForwardRequest 异常。如果 Interceptor 抛出此异常,则不调用其他任何 Interceptor 的 send_request 操作。移除那些 Flow Stack 上的 Interceptor 并调用其 receive_other 截取点。

符合的 Interceptor 如果从此截取点抛出系统异常,则它们应该完全遵守 completion_status 语义。completion_status 应为 COMPLETED_NO

参数:
ri - 关于将被截取的当前请求的信息。
抛出:
ForwardRequest - 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。

send_poll

void send_poll(ClientRequestInfo ri)
允许 Interceptor 在轮询获取应答序列的与时间无关的调用(Time-Independent Invocation,TII)时查询信息。

利用 TII,应用程序可以轮询对之前由轮询客户端或其他客户端发送的请求所做出的响应。此轮询将通过 send_poll 截取点报告给 Interceptor,响应将通过 receive_replyreceive_exception 截取点返回。如果在超过轮询超时期前没有获得响应,则抛出系统异常 TIMEOUT,并使用该异常调用 receive_exception

此截取点可能抛出系统异常。如果抛出异常,则不调用其他任何 Interceptor 的 send_poll 操作。移除那些 Flow Stack 上的 Interceptor 并调用其 receive_exception 截取点。

如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守 completion_status 语义。completion_status 应为 COMPLETED_NO

参数:
ri - 关于将被截取的当前请求的信息。
抛出:
TIMEOUT - 如果在超过轮询超时期前没有获得响应。

receive_reply

void receive_reply(ClientRequestInfo ri)
允许 Interceptor 在从服务器返回后但在向客户端返回控件前查询信息。

此截取点可能抛出系统异常。如果抛出异常,则不调用其他任何 Interceptor 的 receive_reply 操作。将调用 Flow Stack 中剩余 Interceptor 的 receive_exception 截取点。

如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守 completion_status 语义。completion_status 应为 COMPLETED_YES

参数:
ri - 关于将被截取的当前请求的信息。

receive_exception

void receive_exception(ClientRequestInfo ri)
                       throws ForwardRequest
指示 interceptor 发生异常。允许 Interceptor 在向客户端抛出异常前查询异常信息。

此截取点可能抛出系统异常。这等效于更改连续 Interceptor(从 Flow Stack 中移除的)调用 receive_exception 接收到的异常。对客户端抛出的异常将是 Interceptor 抛出的最终异常或者原始异常(如果没有 Interceptor 更改了异常)。

此截取点同样可能抛出 ForwardRequest 异常。如果 Interceptor 抛出此异常,则不调用其他任何 Interceptor 的 receive_exception 操作。移除 Flow Stack 中剩余的 Interceptor 并调用其 receive_other 截取点。

如果异常的 completion_status 不是 COMPLETED_NO,则此截取点抛出 ForwardRequest 异常是不恰当的。将失去请求的最多一次 (at-most-once) 语义。

如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守 completion_status 语义。如果原始异常为系统异常,则新异常的 completion_status 将与原始异常相同。如果原始异常为用户异常,则新异常的 completion_status 应为 COMPLETED_YES

在某些情况下,异常(如 COMM_FAILURE)可能导致重试请求,具体取决于实行的策略。虽然这种重试对于 Interceptor 而言是一个新的请求,但是在原始请求和重试请求之间仍然存在一种相关性:因为没有向客户端返回控制信息,所以原始请求和重试请求的 PortableInterceptor.Current 是相同的。

参数:
ri - 关于将被截取的当前请求的信息。
抛出:
ForwardRequest - 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。

receive_other

void receive_other(ClientRequestInfo ri)
                   throws ForwardRequest
允许 Interceptor 在请求引起了正常应答和异常之外的情况时查询可用信息。例如,请求可以引起重试(例如,收到带有 LOCATION_FORWARD 状态的 GIOP 应答);又如异步调用时,请求后不会立即应答,但是将向客户端返回控制信息并调用终端截取点。

对于重试而言,当已经指示重试后可能执行一个新的请求,也可能不执行,具体取决于实行的策略。如果执行新的请求,则虽然这种重试对于 Interceptor 而言是一个新的请求,但是在原始请求和重试请求之间仍然存在一种相关性:因为没有向客户端返回控制信息,所以原始请求和重试请求的请求域 PortableInterceptor.Current 是相同的。

此截取点可能抛出系统异常。如果抛出异常,则不调用其他任何 Interceptor 的 receive_other 操作。移除 Flow Stack 中剩余的 Interceptor 并调用其 receive_exception 截取点。

此截取点同样可能抛出 ForwardRequest 异常。如果 Interceptor 抛出此异常,则使用 ForwardRequest 异常提供的新信息调用连续 Interceptor 的 receive_other 操作。

如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守 completion_status 语义。completion_status 应该是 COMPLETED_NO。如果已经完成了目标调用,则将调用此截取点。

参数:
ri - 关于将被截取的当前请求的信息。
抛出:
ForwardRequest - 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。

JavaTM 2 Platform
Standard Ed. 5.0

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

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