if(observer != null) observer.up(evt);
    public void onMessage(javax.jms.Message jmsMessage) {        try {            String groupName = jmsMessage.getStringProperty(GROUP_NAME_PROPERTY);            // there might be other messages in this topic            if (groupName == null)                return;                            if(log.isDebugEnabled()) log.debug("Got message for group [" +                groupName + ']' + ", my group is [" + group_addr + ']');            // not our message, ignore it            if (!group_addr.equals(groupName))                return;            JMSAddress src =                jmsMessage.getStringProperty(SRC_PROPERTY) != null ?                    new JMSAddress(jmsMessage.getStringProperty(SRC_PROPERTY)) :                    null;            JMSAddress dest =                jmsMessage.getStringProperty(DEST_PROPERTY) != null ?                    new JMSAddress(jmsMessage.getStringProperty(DEST_PROPERTY)) :                    null;            // if message is unicast message and I'm not the destination - ignore            if (src != null && dest != null &&                 !dest.equals(local_addr) && !dest.isMulticastAddress())                return;                        if (jmsMessage instanceof javax.jms.ObjectMessage) {                byte[] buf = (byte[])((javax.jms.ObjectMessage)jmsMessage).getObject();                ByteArrayInputStream inp_stream=new ByteArrayInputStream(buf);                ObjectInputStream inp=new ObjectInputStream(inp_stream);                                    Message msg=new Message();                msg.readExternal(inp);                                    Event evt=new Event(Event.MSG, msg);                 // +++ remove                    if(log.isDebugEnabled()) log.debug("Message is " + msg +                        ", headers are " + msg.getHeaders ());                /* Because Protocol.Up() is never called by this bottommost layer,                 * we call Up() directly in the observer. This allows e.g.                 * PerfObserver to get the time of reception of a message */                if(observer != null)                    observer.up(evt);                passUp(evt);            }        } catch(javax.jms.JMSException ex) {            ex.printStackTrace();            if(log.isErrorEnabled()) log.error("JMSException : " + ex.toString());        } catch(IOException ioex) {            ioex.printStackTrace();            if(log.isErrorEnabled()) log.error("IOException : " + ioex.toString());        } catch(ClassNotFoundException cnfex) {                cnfex.printStackTrace();                if(log.isErrorEnabled()) log.error("ClassNotFoundException : " + cnfex.toString());        }    }