首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

最新 delphi xe dataSnap callback 有关问题

2012-02-20 
最新 delphi xe dataSnap callback 问题最新 delphi xe dataSnap callback 问题delphi xe 增强了callback

最新 delphi xe dataSnap callback 问题
最新 delphi xe dataSnap callback 问题
delphi xe 增强了callback功能
但是,看李维先生的例子,TDSClientCallbackChannelManager,好像没有用TSQLConnection上的服务器参数
这样,在密码认证的DataSnap 服务器上,就无法使用TDSClientCallbackChannelManager 来注册callback
不知道有没有先知,不吝赐教?

[解决办法]
多好的控件啊,可模仿源代码,传个DBXConnection重新写一个回调注入控件
[解决办法]
TDSClientCallbackChannelManager = class(TComponent)
strict private
FSecurityToken: String;
FDSHostname: String;
FDSPort: String;
FDSPath: String;
FCommunicationProtocol: String;
FChannelName: String;
FManagerId: String;
FConnectionTimeout: String;
FCommunicationTimeout: String;

FLocalCallbackRepo: TObjectDictionary<String, TDBXCallback>;
//增加一个
FDBXConnection:TFDBXConnection;

protected
........
property ConnectionTimeout: String read FConnectionTimeout write FConnectionTimeout;
property CommunicationTimeout: String read FCommunicationTimeout write FCommunicationTimeout;
//增加一个
property DBXConnection:TFDBXConnection read FDBXConnection write FDBXConnection;

end;
implementation

...

procedure TDSClientCallbackChannelManager.ExecuteRemote(const AClassName,
AMethodName: String; ParamSetup, ParamCheckup: TParamSetup; NoTimeout: boolean);
var
DBXConnection: TDBXConnection;
DBXProperties: TDBXDatasnapProperties;
DBXCommand: TDBXCommand;
begin
DBXProperties := DBXConnectionProperties(NoTimeout);
try 
//这里改一下就可以
if FDBXConnection<>nil then
DBXConnection := TDBXConnectionFactory.GetConnectionFactory.GetConnection(FDBXConnection.ConnectionProperties)
else DBXConnection := TDBXConnectionFactory.GetConnectionFactory.GetConnection(DBXProperties);
try
DBXCommand := DBXConnection.CreateCommand;
try
DBXCommand.CommandType := TDBXCommandTypes.DSServerMethod;
DBXCommand.Text := Format('%s.%s', [AClassName, AMethodName]);
DBXCommand.Prepare;

ParamSetup(DBXCommand.Parameters);

DBXCommand.ExecuteUpdate;
ParamCheckup(DBXCommand.Parameters);
finally
try
DBXCommand.Close;
except
// ignore closing exceptions
end;
DBXCommand.Free;
end;
finally
try
DBXConnection.Close;
except
// ignore it
end;
DBXConnection.Free;
end;
finally
DBXProperties.Free;
end;
end;

这样改了后我们是可以用,不知道有那位高手可以改一改淡要再建一个连接,而是使用Tsqlconnection建立的那一个连接。

热点排行