¿Cuál es la mejor manera de reconectarse después de la conexión cerrada en Netty?

Escenario simple:

Una clase A de nivel inferior que se extiende a SimpleChannelUpstreamHandler. Esta clase es el caballo de batalla para enviar el mensaje y recibió la respuesta.

Una clase B de nivel superior que puede ser utilizada por otra parte del sistema para enviar y recibir mensajes (puede simular tanto sincrónicos como asíncronos). Esta clase crea el ClientBootstrap, establece la fábrica de tuberías, invoca el bootstrap.connect () y, finalmente, obtiene un identificador / referencia de la clase A a través del cual se utiliza para enviar y recibir mensajes. Algo como:

ChannelFuture future = bootstrap.connect();
Channel channel = future.awaitUninterruptibly().getChannel();

A handler = channel.getPipeline (). Get (A.class);

Sé que en la clase A, puedo anular public void channelClosed (ChannelHandlerContext ctx, ChannelStateEvent e); de modo que cuando el servidor remoto está inactivo, puedo ser notificado.

Dado que después de que se cierra el canal, la referencia de clase A original (controlador anterior) de la clase B ya no es válida, así que necesito reemplazarlo por una nueva referencia.

Idealmente, quiero que la clase A tenga un mecanismo para notificar a la clase B dentro del método channelClosed anulado anteriormente para que se pueda invocar nuevamente a bootstrap.connect dentro de la clase B. Una forma de hacer esto es tener una referencia en la clase A que haga referencia a la clase B . Para hacer eso, necesitaría pasar la referencia de clase B a PipelineFactory y luego hacer que PipelineFactory pase la referencia de B a A.

¿Alguna otra forma más sencilla de lograr lo mismo?

Gracias,

Respuestas a la pregunta(2)

Su respuesta a la pregunta