public interface ServerRequestInterceptorOperations extends InterceptorOperations
请求拦截器旨在拦截一个请求/应答的序列流通过ORB在特定的点,使服务可以查询请求信息和操作进行客户端和服务器之间的服务范围。请求拦截器的主要用途是使ORB服务传输客户端和服务器之间的上下文信息。有两种类型:客户端和服务器端请求拦截器。
写一个服务器端的拦截,实现serverrequestinterceptor接口。
ServerRequestInfo
Modifier and Type | Method and Description |
---|---|
void |
receive_request_service_contexts(ServerRequestInfo ri)
允许拦截者处理服务上下文信息。
|
void |
receive_request(ServerRequestInfo ri)
允许拦截者在所有的信息,包括操作参数后,查询请求信息,都是可用的。
|
void |
send_exception(ServerRequestInfo ri)
允许一个拦截者查询异常信息,并在向客户端抛出异常之前修改答复服务上下文。
|
void |
send_other(ServerRequestInfo ri)
允许一个拦截者在一个请求结果以外的其他正常的答复或异常时查询可用的信息。
|
void |
send_reply(ServerRequestInfo ri)
允许一个拦截器查询答复信息,并在目标操作被调用后修改答复服务上下文,并在答复返回给客户端之前修改答复服务上下文。
|
destroy, name
void receive_request_service_contexts(ServerRequestInfo ri) throws ForwardRequest
在这个拦截点,拦截器必须从传入的请求传递给PortableInterceptor.Current
插槽获得服务的上下文信息。
这一拦截点被称为前仆人管理器被称为。操作参数在这一点上还没有可用。该截取点可以在同一个线程中执行或可能不在同一个线程中执行目标调用。
这个拦截点可能会抛出一个系统异常。如果是这样,没有其他的拦截器receive_request_service_contexts
操作被称为。在流堆栈弹出的拦截和send_exception
拦截点称为。
这种拦截点可能也扔了一ForwardRequest
例外。如果拦截引发此异常,没有其他receive_request_service_contexts
拦截器调用操作。在流堆栈弹出的拦截和send_other
拦截点称为。
兼容的截击机应适当遵循completion_status
语义,如果他们把系统异常从拦截点。的completion_status
应completed_no。
ri
关于当前请求的信息被截获。
ForwardRequest
如果抛出,表明的圆球,重试请求应该在给新对象发生异常。
void receive_request(ServerRequestInfo ri) throws ForwardRequest
在DSI模型,由于参数的第一个可用时,用户代码的调用arguments
,receive_request
是从内部arguments
叫。这是可能的,arguments
不在DSI模型。目标可以叫set_exception
之前调用arguments
。ORB应保证receive_request
叫做曾经,或者通过arguments
或通过set_exception
。如果是通过set_exception
,请求的参数将导致NO_RESOURCES
抛出一个标准的小代码1。
这个拦截点可能会抛出一个系统异常。如果是这样,没有其他的拦截器receive_request
操作被称为。在流堆栈弹出的拦截和send_exception
拦截点称为。
这种拦截点可能也扔了一ForwardRequest
例外。如果拦截引发此异常,没有其他receive_request
拦截器调用操作。在流堆栈弹出的拦截和send_other
拦截点称为。
柔性拦截应适当如果他们把系统异常从拦截点跟随completion_status
语义。的completion_status
应COMPLETED_NO
。
ri
关于当前请求的信息被截获。
ForwardRequest
如果抛出,表明的圆球,重试请求应该在给新对象发生异常。
void send_reply(ServerRequestInfo ri)
这个拦截点可能会抛出一个系统异常。如果是这样,没有其他的拦截器send_reply
操作被称为。在流栈的剩余应send_exception
拦截器拦截点称为。
兼容的截击机应适当遵循completion_status
语义,如果他们把系统异常从拦截点。的completion_status
应COMPLETED_YES
。
ri
关于当前请求的信息被截获。
void send_exception(ServerRequestInfo ri) throws ForwardRequest
这个拦截点可能会抛出一个系统异常。有这样的效果:改变异常连续拦截弹出堆栈的流量收到他们的电话send_exception
。向客户端抛出的异常将是由一个拦截机抛出的最后一个异常,或者如果没有任何一个拦截者改变异常的原始异常。
这种拦截点可能也扔了一ForwardRequest
例外。如果拦截引发此异常,没有其他send_exception
拦截器调用操作。在流叠加剩余的拦截器将有他们的send_other
拦截点。
如果该异常的completion_status
不COMPLETED_NO
,那么这个拦截点扔ForwardRequest
例外是不合适的。一次一次的请求的语义将丢失。
柔性拦截应适当如果他们把系统异常从拦截点跟随completion_status
语义。如果原来的异常是一个系统的异常,异常的新completion_status
应如原来一样。如果原来的异常是一个用户异常,那么新的例外completion_status
应COMPLETED_YES
。
ri
关于当前请求的信息被截获。
ForwardRequest
如果抛出,表明的圆球,重试请求应该在给新对象发生异常。
void send_other(ServerRequestInfo ri) throws ForwardRequest
LOCATION_FORWARD
地位GIOP回复)。该截取点应在同一个线程中执行目标调用。
这个拦截点可能会抛出一个系统异常。如果是这样,没有其他的拦截器send_other
操作被称为。在流叠加剩余的拦截器将有他们的send_exception
拦截点。
这种拦截点可能也扔了一ForwardRequest
例外。如果拦截引发此异常,连续send_other
拦截器调用操作的ForwardRequest
异常提供了新的信息。
兼容的截击机应适当遵循completion_status
语义,如果他们把系统异常从拦截点。的completion_status
应COMPLETED_NO
。
ri
关于当前请求的信息被截获。
ForwardRequest
如果抛出,表明的圆球,重试请求应该在给新对象发生异常。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.