送分!只要您帮忙,又不是太难?关于应用服务器的接口?(100分)

  • 主题发起人 主题发起人 ljpxyxc
  • 开始时间 开始时间
L

ljpxyxc

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做三层结构的开发时,WIN2000 SERVER + DELHPI5 有如下问题:
在开发客户端程序时,用DCOM 方式连结应用服务器.在设计状态下,一切正常,可是编译运
行时,弹出如下错误:
DAX ERROR
Name not Unique in this context!
Error
Project project1.exe raise exception class EOleSysError with message'不支持此
接口'.Process stopped!use step or run to Continue!
我已经重装过N次WIN2K ,可还是解决不了问题.试过DELPHI 的例子,可以正常执行.当应用
服务器改用C++BUILDER 编写时,(客户端用DELPHI5)也不存在这个问题!
究竟该怎么办?
 
你DCOM配置过吗?
dcomcnfg.exe配置一下应该可以解决问题了!
 
Name not Unique in this context 可能是 Session 引起的,如果是的话,试试对每个
TDatabase 组件相应放置一个 TSession 组件,将 Database 的 SessionName 指定为该
Session,并将该 Session组件的 AutoSessionName 设为 True。
 
注册问题?
 
TO bbkxjy:
兄台:你说的很对!照着做果然OK,可是我很愚笨,你好好的帮我解释一下
TSession的用法。以及你为什么这样做,就....OK了?
只要你再说的详细一些,我一定加分
THANKS!
 
to:bbkxjy
兄台:按你的说法,我设置了DataBase的Session 结果是对了.可是,客户端程序运行实例数
不能超过12个,当运行第十三个实例时,便会报告类似的错误.(无论是调试状态,还是实际
运行)只要关闭一个实例,此时,客户端程序运行实例数<=11.便可继续启动一新的客户端
实例,但无论如何,总数不会大于13个.为何?
我的后端数据库用的是ACCESS2000,不知与这有没有关系?
请各位高手帮忙.
先谢了!
 
一个 TSession 对象维护一个数据库连结,你的 AppServer 中的 RemoteDataModule 用了
ciMultiInstance 的实例化类型和除了tmSingle 以外的线程模式时,对每个客户的请求,会
在一个新的线程中生成一个新的 RemoteDataModule 来提供服务,如果不在 RMD 上放一个
AutoSessionName 为 True 的 Session,则第二个 RMD 创建时,会试图创建一个名字与第
一个 RMD 中 Session 名字一样的 Session,这样,IDAPI/BDE 就会报以上名字不唯一的
错,设 Session 的 AutoSessionName 为 True,则会自动为新创建的 Session 安一个在
IDAPI/BDE 环境中唯一的名字。另外,如果不把 Session 组件的 AutoSessionName 设为
True 的话,设 Database 组件的 HandleShared 为 True,则所有的 RMD 都会共用一个
Session,也能解决名字冲突的问题,但所有客户都共用一个数据库连结,多用户时效率低。
IDAI/BDE 限制一台机器上最多有 48 个 Session,你说的同时不能超过 12 个客户,可能
跟这个限制有关,大概一个客户要用到 AppServer 中的 4 个 RMD? 要突破这个限制,可以
用 Session Pooling 的技术,或者用 ADO 。
建议你参考李维先生的<<Delphi 5.x 分布式多层应用>>系列书籍,我觉得是目前国内介绍
用 Delphi 开发多层应用最好的参考书。
 
把你的 TDatabase 组件的 HandleShared 属性置成 True
 
呵呵/我是来听听的!
 
TO bbkxjy:
谢谢兄台:
小弟以后定当好好学习!分我已加上.100分全归你了!小弟还有一小小要求,望兄能将
你的EMAIL 给我!我的是ljpxyxc@sina.com.以方便小弟日后向您请教!
 
后退
顶部