跟贴请点击 http://www.huihoo.com/cgi-bin/forum/viewthread.php?tid=1266
作者 | 文章标题 请问如何实现一个类似EJB BEAN的CORBA服务器??? | |
新手上路 贴子数量 : 7 注册日期 : 6/24/2002 在线情况 : 离线 |
发表于: 7/9/2002 - 02:20 | |
也就是说,实现的CORBA服务器在多个方法调用之间能够维持用户的会话状态。
在此先感谢各位大侠了。 ____________________ 你可以侮辱我,但不能侮辱我的技术 | ||
版主 贴子数量 : 264 注册日期 : 10/28/2001 在线情况 : 离线 |
发表于: 7/9/2002 - 07:08 | |
你可以参考CCM规范(CORBA Component Model)
在CCM规范中,每个Component都是使用工厂创建出来的,如果是Session类型的Component,那么每个客户要使用它,都要自己创建一个。 CCM中的扩展类型的构件除外。因为它可能是一个Assembly的一部分(所谓Assembly,就是由多个Component组成,他们之间的通讯通道由部署工具连接而成) | ||
版主 贴子数量 : 198 注册日期 : 11/16/2001 在线情况 : 离线 |
发表于: 7/9/2002 - 08:30 | |
如果先不谈CCM(实际上原理都是一致),我们来看一个实际的IDL设计:
module BankDemo { typedef float CashAmount; // Type for representing cash typedef string AccountId; // Type for representing account ids // Forward declaration of Account // interface Account; // Bank interface...used to create Accounts // interface Bank { exception AccountAlreadyExists { AccountId account_id; }; exception AccountNotFound { AccountId account_id; }; Account find_account( in AccountId account_id ) raises(AccountNotFound); Account create_account( in AccountId account_id, in CashAmount initial_balance ) raises (AccountAlreadyExists); void shutdown_bank(); }; // Account interface...used to deposit, withdraw, and query // available funds. // interface Account { exception InsufficientFunds {}; readonly attribute AccountId account_id; readonly attribute CashAmount balance; void withdraw( in CashAmount amount ) raises (InsufficientFunds); void deposit( in CashAmount amount ); }; }; -摘自IONA OrbixE2A demo "servant management" 在这个例子子中,bank是工厂,且是non session的,product是有有状态的,客户端拿到bank的对象引用,调用bank的find_account,create_account方法得到得到有状态的product。 当然,在服务端的内存和对象管理较复杂,我认为这也是为什么会有CCM的最初动因吧。 | ||
版主 贴子数量 : 198 注册日期 : 11/16/2001 在线情况 : 离线 |
发表于: 7/12/2002 - 03:26 | |
本人最近刚译了一篇关于这个论题的文章"EJB/CORBA的区别与联系":
http://www.huihoo.com/corba/EJB_CORBA_Comparison_chinese.pdf 请提意见。 | ||