在服务器端,服务器的ORB在运行时从网络读取请求,并通过调用在第一个安装的消息拦截器上的receive_message( )开始处理请求。ORB用对象要害词以标识目标必须含有POA的名字,通过POA才能到达该对象。找到正确的P O A后,下一步是寻找对象本身,这个工作如何完成取决于为对象的POA定义的策略。假如对象能够定位,ORB通过调用在第一个安装的请求拦截器上的target_invoke( )来继续处理请求,拦截器则使用DII函数invoke( )来依次继续处理请求,这在客户端中已经讨论过。这里假设只安装了一个请求拦截器,请求最后会被分派到目标对象的实现。
当对象完成处理请求后,消息拦截器的invoke( )调用返回,拦截器现在就有机会在返回到ORB运行时模块之前通过激发请求对象上的result( )来检验操作的结果。服务器端的最后一件事是ORB对服务器消息拦截器上的send_message( )的激发。在客户端,拦截器以类似的方式来处理:首先ORB调用消息拦截器上的receive_message( )方法,然后请求拦截器对invoke( )的阻塞调用返回,并使这...[ 查看全文 ]