MemoryGarden's Blog

努力 -----------大能猫

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 11 Stories :: 20 Comments :: 0 Trackbacks
只贴出一些自己懂的。 以后懂多少贴多少


通信器的接口是用Slice 定义的。下面是其部分接口:

 1 module Ice {
 2     local interface Communicator {
 3         string proxyToString(Object* obj);
 4         Object* stringToProxy(string str);
 5         ObjectAdapter createObjectAdapter(string name);
 6         ObjectAdapter createObjectAdapterWithEndpoints(string name,string endpoints);
 7         void shutdown();
 8         void waitForShutdown();
 9         void destroy();
10         
11     };
12     // 
13 };


通信器提供了一些操作:
• proxyToString
• stringToProxy
这两个操作允许你把代理转换成串化表示,或进行反向转换。
• createObjectAdapter
• createObjectAdapterWithEndpoints
这两个操作创建新的对象适配器。每个对象适配器都与一个或更多
传输端点关联在一起。一个对象适配器通常拥有一个传输端点。但是,
一个对象适配器也可以提供多个传输端点。如果是这样,这些端点可以
通往同一组对象,但代表访问这些对象的不同手段。这很有用,例如,
服务器在防火墙后面,但必须让内部和外部的客户都能访问它;把适配
器同时绑定到内部和外部接口,就可以其中任何一个接口访问在服务器
中实现的对象了。
createObjectAdapter 根据配置信息(参见第20 章)来确定把自己
绑定到哪个端点,而createObjectAdapterWithEndpoints 允许你为新
适配器指定传输端点。你通常会优先于createObjectAdapterWithEndpoints
使用createObjectAdapter。这样,就能把与传输机制相关的信
息(比如主机名和端口号)放在 源码外面,通过改变属性,你可以对
应用进行重配置(于是,在传输端点需要改变时,不用重新进行编
译)。
• shutdown
这个操作关闭服务器端的Ice run time:
• 在shutdown 被调用时,仍处在执行过程中的操作调用可以正常完成。
shutdown 不会等待这些操作完成;在shutdown 返回时,你所知道的
是:不会再有新的请求被分派,但在你调用shutdown 时已经在执行
之中的操作可能仍在运行。你可以调用waitForShutdown,等待仍在
执行的操作完成。
• 在服务器调用shutdown 之后到达的操作调用或者会失败(抛出
ConnectFailedException),或者会被透明地重定向到服务器的某个
新实例(参见第20 章)。
• waitForShutdown
这个操作挂起发出调用的线程,直到通信器关闭为止(也就是说,
直到在服务器中不再有操作在执行为止)。这样,你可以在销毁通信器
之前,等待服务器空闲下来。
• destroy
这个操作销毁通信器及其相关资源,比如线程、通信端点,以及内
存资源。一旦你销毁了通信器(因此也就销毁了该通信器的run
time),你不能再调用其他任何Ice 操作(除了创建另外的通信器)。
在离开程序的main 函数之前要调用destroy,这是强制性的。不这
样做会导致不确定的行为。
在离开main 之前调用destroy 是必需的,因为destroy 会在返回
之前等待所有运行中的线程终止。如果你没有调用destroy 就离开
main,你就会留下许多仍在运行的线程;许多线程包不允许你这样做,
你最终会使程序崩溃。
如果你没有调用shutdown 就调用destroy,在这个调用返回之前,它会
等待所有执行中的操作调用完成(也就是说, destroy 的实现隐含地调用
shutdown,然后调用waitForShutdown)。shutdown (因此,也包括
destroy)会解除与通信器相关联的所有对象适配器的激活。
在客户端,如果你在操作执行过程中调用shutdown,这些操作会终止,
抛出CommunicatorDestroyedException。


posted on 2009-12-17 15:39 memorygarden 阅读(1460) 评论(0)  编辑 收藏 引用 所属分类: ICE

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理