Ho un server datasnap con un client vcl forms. Dal client, come posso gestire se il server è stato chiamato shutdown e riavviato con le connessioni client esistenti? Questo scenario solleva un'eccezione EIdSocketError 10053.Datasnap and SocketError
Per replicare, eseguo sia il server che il client, effettuo una chiamata al server (utilizzo i metodi esposti tramite il generatore di proxy DataSnap) che funziona correttamente. Quindi chiudo il server (ad esempio Chiudi l'applicazione) e lo riavvio. Quindi tento di effettuare nuovamente una chiamata al server.
esempio: CLIENT chiamata
sm := TsvrPolicySearchClient.Create(datClientDB.SQLConnection1.DBXConnection);
try
ds := sm.SearchPolicyByPolicy(40, WCRef, '', 3);
dspPolicyGroup.DataSet := ds;
if cdsPolicyGroup.Active then
cdsPolicyGroup.Refresh
else
cdsPolicyGroup.Open;
finally
sm.Free;
end;
dspPolicyGroup è un TDataSetProvider e cdsPolicyGroup è un TClientDataSet (ho appena lo uso a livello locale per "immagazzinare" il mio risultato TDataSet).
SERVER
function TsvrPolicySearch.SearchPolicyByPolicy(AClientId: Integer; WCRefNum, ClientRef: string; SearchMethod: Integer): TDataSet;
begin
spPolicyByWCRef.Close;
spPolicyByWCRef.ParamByName('p_client').AsInteger := AClientId;
spPolicyByWCRef.ParamByName('p_search_method').AsInteger := SearchMethod;
spPolicyByWCRef.ParamByName('p_wc_refno').AsString := WCRefNum;
spPolicyByWCRef.Open;
Result := spPolicyByWCRef;
end;
penserei questo è regolarmente incontrato da persone vedendo che è abbastanza facile da replicare. Devo mettere una chiamata "Test Connection" o qualcosa prima (come un metodo TestConnection) prima di ogni chiamata per verificare EIdSocketError (e equivalente) e gestire? O è forse più un difetto di progettazione?
Grazie