@Override
    public void run() {
        try {
            out = new PrintWriter(connection.getOutputStream());
            out.flush();
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String message = "";
            String line = "";
            do {
                line = in.readLine();
                if (!("\3".equals(line))) {
                    message += line;
                }
            } while (null != line && !(socketMessageEndMark.equals(line)));
            System.out.println(message);
            metaDataNodeRequestDealer = new MetaDataNodeRequestDealer(message);
            metaDataNodeRequestDealer.deal();
            System.out.println(metaDataNodeRequestDealer.getReturnXmlStr());
            sendMessage(out, metaDataNodeRequestDealer.getReturnXmlStr());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (XmlTypeErrorException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (InvalidXmlException e) {
            // TODO this is an exception that not handled
            e.printStackTrace();
        }
    }