Ver Mensaje Individual
  #1  
Antiguo 26-01-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Reputación: 24
Rockin Va por buen camino
Capturar ESocketError en la aplicacion

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.
Responder Con Cita