Problemas com métodos estáticos

Saudações!

Estou desenvolvendo um chat utilizando exemplo do Guj.

Tenho 2 classes denominadas UsuarioChat e Sala, sendo que Sala importa os atributos de UsuarioChat.
Em UsuárioChat tenho o seguinte método:

public static void enviaMensagem(Mensagem msg) throws IOException{ // I) Para um destinatário especifico if (msg != null && msg.getPara() != null) { msg.getPara().adicionaMsg(msg); msg.getDe().adicionaMsg(msg); return; } // II) Para todos da sala Hashtable todos = getUsuarios(); Iterator i = todos.keySet().iterator(); while (i.hasNext()){ String nomeUsuario = (String) i.next(); Usuario usuario = ((Usuario) todos.get(nomeUsuario)); try{ usuario.adicionaMsg(msg); } catch(Exception e){ e.printStackTrace(); remUsuario(usuario); } } }

Na classe Sala chamo esse método:

public final void doGet(
            final HttpServletRequest req,
            final HttpServletResponse res)
    throws ServletException, IOException{
....
UsuarioChat.enviaMensagem(
                    new UsaMensagem(usuario, " entrou na sala" 
                            + new SimpleDateFormat("hh:mm").format(new Date())
                            + "<script>addUser('"
                            + usuario.getNome()
                            + "');</script>")
                            );

O problema é que quando deixo o método enviaMensagem como estático em UsuarioChat dá erro de compilação dizendo que sala não consegue instanciar por que é estatico, se deixo sem ser estático, dá erro de compilação por que precisa ser estático.

Alguém pode me auxiliar?

Abraços[/u]

  1. Mude o metodo enviaMensagem para nao estatico e use uma instancia da classe

  2. Declare os metodos nao-estaticos que dependam do enviaMensagem como estaticos

  3. Crie um singleton ( CALM DOWN cv :wink: ) e use ele no enviaMensagem

Rafael

3) Crie um singleton ( CALM DOWN cv ) e use ele no enviaMensagem

Desculpe a ignorância, o que é um singleton?

Procura no forum ( http://www.guj.com.br/forum/search.php ) sobre o assunto… :slight_smile:

Rafael