关于用 CorBa 做三层数据库问题,很棘手,请各位帮忙! 谢谢!【 300分 】【参与有分,多劳多得,公平公正,共同进步】(300分)

  • 主题发起人 主题发起人 1_1_1_1
  • 开始时间 开始时间
1

1_1_1_1

Unregistered / Unconfirmed
GUEST, unregistred user!
用CorBa协议作三层数据库中间层,当两个以上用户同时使用一个模块时会出现
中间层断掉(也就是与客户端失去联系),必须重新打开中间层才能运行,请问各位
有什么办法或经验能告知小弟吗?
有办法的说说办法,有经验技巧的提供点,有相关资料的提供点线索(链接、
贴到这里或给我发邮件),不知道的帮忙提前一下,共同学习,所有参与人员都有分,
我的E_Mail:tang_8717@163.com ,希望大家给我点主意,谢谢!

【参与有分,多劳多得,公平公正,共同进步】
 
中间层必须使用多线程的数据任务,保障每个客户端都使用独立的线程,互不影响。
具体情况不明白再交流。
 
To 薛獅 :
谢谢你的回答,具体怎么做呢?
能否详细点,提供些资料或实例,最好是中文的,
确实没有英文也行! 分一定少不了,非常感谢!
tang_8717@163.com
 
将Threading model设为multi-threaded就是多线程模式,不过如果你既选择multi-treaded,
又选择了Shared-instance模式,就必须用代码来保护数据以防止各个thread之间产生冲突
和错误.
 
TO tangle:
Threading model在哪里设置?我的中间层已经做好了,怎么修改这个属性?
请说出具体的操作步骤,谢谢!

【另:】请大家多发言,帮小弟一把,感激不尽!!!
 
找些有关CORBA的资料看看就可
 
在数据模板的类生成单元中initialization段,有一句类生成语句,将这条语句的参数设置为
ciMultiInstance,tmApartment应该就可以了。
我有一本专门关于MADIS和Corba的书,for D4的,我记得是机械工业出版社出版的,建议仔细
找找类似的书籍,很多书店都有。
 
设置的地方如楼上所说,不过参数应该是:
iMultiInstance(对应Instance-per-client)
iSingleInstance(对应Shared-instance)
tmMultiThreaded(对应multi-threaded)
tmSingleThread(Single-treaded)
 
给你点资料:
CORBA 的单线程模式(Single-Threaded)与多线程模式(MultiThreaded)
在代码上的区别:
1、数据模板文件(*.pas):(最后几行)
单线程模式(Single-Threaded):
initialization
TCorbaVclComponentFactory.Create('entmandataFactory', 'entmandata', 'IDL:Entser/entmandataFactory:1.0', Ientmandata,
Tentmandata, iMultiInstance, tmSingleThread);
end.
多线程模式(MultiThreaded):
initialization
TCorbaVclComponentFactory.Create('Ent_DataModuleFactory', 'Ent_DataModule', 'IDL:EntSer/Ent_DataModuleFactory:1.0', IEnt_DataModule,
TEnt_DataModule, iMultiInstance, tmMultiThreaded);
end.
2、CORBA对象文件(*.pas):(也是最后几行)
单线程模式(Single-Threaded):
initialization
TCorbaObjectFactory.Create('EntmanobjFactory', 'Entmanobj', 'IDL:Entser/EntmanobjFactory:1.0', IEntmanobj,
TEntmanobj, iMultiInstance, tmSingleThread);
end.
多线程模式(MultiThreaded):
initialization
TCorbaObjectFactory.Create('Ent_DataObjFactory', 'Ent_DataObj', 'IDL:EntSer/Ent_DataObjFactory:1.0', IEnt_DataObj,
TEnt_DataObj, iMultiInstance, tmMultiThreaded);
end.

【说明:】其实就是一个区别:单线程为tmSingleThread,多线程为tmMultiThreaded。
实例化方法:
iMultiInstance (对应Instance-per-client)
iSingleInstance (对应Shared-instance)
线程模式:
tmMultiThreaded (对应multi-threaded)
tmSingleThread (对应Single-treaded)
 
谢谢各位的答复,我以按各位的指点改了,
下个礼拜我把它给我的客户测试一下,看行不行,
OK后马上给分, ^_^
欢迎大家继续讨论!!!
 
中间层最好使用多线程的数据任务,保障每个客户端都使用独立的线程,这样不会断开。看看李维的书吧!
 
哪里有李维的书下载?
 
 類似問題我也在改,以上說的方法我也試過,不過問題依舊,不知哪位確實解決過此問題,
如沒有最好就不要亂下結論,做軟件嗎最好還是嚴謹點的好,
 
建义你多看一些分布式开发的资料,像李维的分布式开发系统篇就比较好,
 
CorBa 我不熟悉,不过,你用了事务了吗?引入事务也许要好一些!
 
想要李维的书找我呀,把E-MAIL报上(关于midas的书)
 
:唐佐平
这样的方法你可以试试,如果不行的话,在讨论
 
pengjinlongex:
E_Mail:tang_717@163.com
谢谢。
小汽车:你说的是什么方法?



 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部