Buenas os escribo porque he buscado por todo lados y estoy un poco desesperado.
Os pongo en situación, tengo una aplicación en 3 capas usando datasnap con TSocketConnection.
Tengo 3 servidores de aplicaciones donde los clientes se conectan con balanceo de carga, el problema es que cuando tengo que cambiar algo en la capa intermedia tengo que tirar abajo un servidor y todos los clientes que tengo conectado a ese se caen. Quiero implementar una rutina de reconexión, algo parecido a lo siguiente:
Código Delphi
[-]
procedure ReconexionBD();
var
servidor1, servidor2, i: integer;
begin
frmEjecuntado:= TfrmEjecuntado.Create(Self);
frmEjecuntado.Label1.Caption:= 'Esperando reconexión con el Servidor...';
frmEjecuntado.Label2.Caption:= 'Por favor espere';
frmEjecuntado.Show;
frmEjecuntado.Update;
datDatosRemoto.ConexionSocket1.Address:= '192.168.232.200';
datDatosRemoto.ConexionSocket1.Address:= '192.168.232.200';
datDatosRemoto.ConexionSocket1.Connected:= True;
datDatosRemoto.ConexionSocket2.Connected:= True;
frmEjecuntado.Destroy;
ShowMessage('Reconexión establecida con éxito');
end;
Aquí cambio a uno de los otros dos sevidores que están operativos, esto lo tengo listo.
El problema es que no se donde meter la excepción siguiente:
Código Delphi
[-]
try
except
on e:ESocketError do
ReconexionBD();
end;
Donde la ponga, no me captura la excepción y me sale el siguiente cartel:
No se donde poner la excepcion para que me la capture y me ejecute el procedimiento.
La he puesto en la desconexión del Socket, en el Application.Run del proyecto principal, en el CreateModule del Modulo remoto.
A ver si alguno tiene alguna idea.
Saludos y gracias de antemano.