Problemas com rmi e observer

Ola a todos…
Estou fazendo um projeto e estou tendo problema em usar o padrão observer em uma estrutura rmi. Comecei implementando alguns tutoriais básicos que achei aqui mesmo no fórum e em alguns outros sites e obtive os resultados esperados, mas não consegui utilizar os dois padrões juntos. Segue código:

Servidor


 

import java.rmi.Naming;
import java.util.Observable;
import java.util.Observer;

public class MensageiroServer implements Observer{

	public MensageiroServer() {
		try {
			InterfaceMensageiro m = new MensageiroImpl();
			Naming.rebind("rmi://192.168.1.92:1099/MensageiroServer", m);
			m.retornaSistemaMensagens().addObserver(this);
			m.retornaSistemaMensagens().setMensage("oi");
			//na estrutura local funciona
			System.out.println("Mensageiro Server ON");
		}
		catch( Exception e ) {
			System.out.println( "Trouble: " + e );
		}
	}

	public static void main(String[] args) {
		new MensageiroServer();
	}

	@Override
	public void update(Observable o, Object arg) {
		System.out.println(((MensagensRecentes)o).getMensage());
	}
}

Cliente:(Não reparem no código do netbeans, pressa de fazer dah nisso XD)



import java.io.Serializable;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextArea;


public class JanelaMelmanSN extends javax.swing.JFrame implements Observer, Serializable{

    private JPanel PanelPrincipal;
    private JButton envia;
    private JPanel fotoAmigo;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JSeparator jSeparator1;
    private JPanel suaFoto;
    private JTextArea textoConversa;
    private JTextArea textoEnvio;
    private InterfaceMensageiro m;
    private MensagensRecentes msgAtualizacao;
	
    public JanelaMelmanSN() {
        initComponents();
        try {
            m = (InterfaceMensageiro) Naming.lookup( "rmi://192.168.1.92/MensageiroServer" );
        } catch (NotBoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        try {
			 //msgAtualizacao = m.retornaSistemaMensagens();  //fazendo-se uma instancia, o programa roda, mas nao faz acesso
			 //msgAtualizacao.addObserver(this);     		  //a atualizacoes gerais, apenas do proprio pc.
        	m.retornaSistemaMensagens().addObserver(this);
			
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }

    private void initComponents();//apagado pois é grande e desnecessario 

    private void enviaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enviaActionPerformed     
    	//msgAtualizacao.setMensage(textoEnvio.getText());     //Para uso com instancia.
    	
    	try {
			m.retornaSistemaMensagens().setMensage(textoEnvio.getText());
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(textoEnvio.getText());
    }//GEN-LAST:event_enviaActionPerformed

    public void update(Observable o, Object arg) {
    	textoConversa.setText(textoConversa.getText()+"\n"+((MensagensRecentes)o).getMensage());
    }
}

Estas são as principais, se tiverem alguma dúvida só falar que eu posto d novo.
Obrigado pela atenção e tenha um bom dia/tarde/noite.
Att:Abstract Group