Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

ProcedureCómo definir el subproceso de recepción de eventos

En el código, hay que comprobar que la recepción de eventos se realice en un subproceso aparte de forma que la aplicación pueda seguir realizando el otro trabajo, mientras el subproceso de evento se bloquea y espera rellamadas de eventos.


Nota –

La configuración de XML se describe más adelante en este capítulo.


Pasos
  1. En el código, defina la subclase Thread denominada EventReceptionThread que crea un socket, ServerSocket , y espera la recepción de los eventos en el socket.

    En esta parte del código de ejemplo, los eventos no se leen ni se procesan. La lectura y el procesamiento de eventos se describen más adelante en este capítulo. EventReceptionThread crea un socket, ServerSocket, en una dirección de protocolo de inteconexión con comodines. EventReceptionThread también mantiene una referencia al objeto CrnpClient para que EventReceptionThread pueda enviar eventos al objeto CrnpClient para su procesamiento.

    class EventReceptionThread extends Thread
    {
            public EventReceptionThread(CrnpClient clientIn) throws IOException
            {
                    client = clientIn;
                    listeningSock = new ServerSocket(client.localPort, 50,
                        InetAddress.getLocalHost());
            }
    
            public void run()
            {
                    try {
                            DocumentBuilder db = client.dbf.newDocumentBuilder();
                            db.setErrorHandler(new DefaultHandler());
    
                            while(true) {
                                    Socket sock = listeningSock.accept();
                                    // Construct event from the sock stream and process it
                                    sock.close();
                            }
                            // UNREACHABLE
    
                    } catch (Exception e) {
                            System.out.println(e);
                            System.exit(1);
                    }
            }
    
            /* private member variables */
            private ServerSocket listeningSock;
            private CrnpClient client;
    }
  2. Construya un objeto createEvtRecepThr.

    private void createEvtRecepThr() throws Exception
    {
            evtThr = new EventReceptionThread(this);
            evtThr.start();
    }