fixMessageData.setSession(quickfixSession);
    protected void processMessage(Session nettySession, Message message) {        logDebug(nettySession, null, "received message");        quickfix.Session quickfixSession = getQuickFixSession(nettySession, message);        if (quickfixSession == null) {            return;        }        try {            FIXMessageData fixMessageData = (FIXMessageData) message;            quickfixSession.getState().logIncoming(fixMessageData.toString());            DataDictionary dataDictionary = quickfixSession.getDataDictionary();            quickfix.Message fixMessage = fixMessageData.parse(dataDictionary);            //onMessage(nettySession, quickfixSession, fixMessage);            try {                if (fixMessage.getHeader().getString(MsgType.FIELD).equals(MsgType.LOGON)) {                    if (quickfixSession.isLoggedOn()) {                        for (long i = 0; i < logonPollingTimeout && quickfixSession.isLoggedOn(); i += logonPollingPeriod) {                            Thread.sleep(logonPollingPeriod);                        }                        if (quickfixSession.isLoggedOn()) {                            logError(nettySession, quickfixSession.getSessionID(),                                    "multiple logon, disconnecting client", null);                            nettySession.close();                            return;                        }                    }                    if (fixMessage.isSetField(HeartBtInt.FIELD)) {                        int heartbeatInterval = fixMessage.getInt(HeartBtInt.FIELD);                        nettySession.getConfig().setIdleTime(heartbeatInterval);                        quickfixSession.getState().setHeartBeatInterval(heartbeatInterval);                        if (log.isDebugEnabled()) {                            logDebug(nettySession, quickfixSession.getSessionID(),                                    "heartbeat/idle=" + heartbeatInterval);                        }                    }                    quickfixSessionForNettySession.put(nettySession, quickfixSession);                    ResponderAdapter responderAdapter = new ResponderAdapter(nettySession);                    quickfixSession.setResponder(responderAdapter);                    logDebug(nettySession, quickfixSession.getSessionID(), "session bound");                }                quickfixSession.next(fixMessage);            } catch (Throwable e) {                quickfix.Log sessionLog = quickfixSession.getLog();                LogUtil.logThrowable(sessionLog, "error while receiving message", e);                if (fixMessageData.isLogon()) {                    try {                        quickfixSession.disconnect();                    } catch (IOException ioException) {                        LogUtil.logThrowable(sessionLog, "error during disconnect", ioException);                    }                }            }        } catch (InvalidMessage e) {            LogUtil.logThrowable(quickfixSession.getLog(), "error during disconnect", e);        }    }