Registro no BD com RMI

Oi gente!

Bem, eu comecei ver RMI semana passada e preciso criar uma aplicação que receba uma mensagem do cliente e armazene em um banco de dados. Já criei o BD e as classes, além da interface, mas tenho a impressão que estou esquecendo de algo vital no meu código… bem, ele não funciona e já não tenho mais idéia do que estou fazendo errado.

Esse é o código da implementação:

[code]import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.*;

//cria a classe e extende unicastremoteobject e implementa a interface simuladorremoto
public class SimuladorImpl extends UnicastRemoteObject implements Simulador {

//construtor e conexao com banco de dados
public SimuladorImpl() throws RemoteException {}
    public String dbUrl = "jdbc:mysql://localhost:3306/simulador"; //endereco do bd
    public String dbDriver = "com.mysql.jdbc.Driver"; //endereco do driver
    public String dbUser = "root";
    public String dbSenha = "root";


public void setMensagem(SimuladorInterface tentar) throws RemoteException{
    
    Connection conexao = null; //DEFININDO OBJETO DE CONEXAO COM BD.
    try{
        try {
            Class.forName(dbDriver);
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        conexao = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
        conexao.setAutoCommit(false);
        Statement stat = conexao.createStatement();
        String sql = "insert into simulacao (mensagem) values ('" + tentar.lerMensagem() + "')";
        System.out.println(sql);
        stat.executeUpdate(sql);
        conexao.commit();
        stat.close();
        conexao.close();
    } catch(SQLException e){
        try {
            conexao.rollback();
            conexao.close();
        } catch(Exception ex){
            ex.printStackTrace();
        }
    }
}
    
//implementa a interface
public SimuladorInterface getMensagem(String mensagem) throws RemoteException{
    SimuladorInterface simulador = new SimuladorInterface(); //cria novo objeto simuladorinterface
    Connection conexao = null; //nova conexao
    try {
        try {
            Class.forName(dbDriver);//?
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        conexao = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
        Statement stat = conexao.createStatement();
        String sql = "SELECT * FROM simulador" + " WHERE mensagem LIKE '" + "%' ORDER BY nome";
        ResultSet resultado = stat.executeQuery(sql);

        while (resultado.next()) {
            simulador.enviarMensagem(resultado.getString(1));
        }
        resultado.close();
        stat.close();
        conexao.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return simulador;
}

@Override
public void enviarMensagem(String msg) throws RemoteException {
    throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public String lerMensagem() throws RemoteException {
    throw new UnsupportedOperationException("Not supported yet.");
}

}[/code]

E esse é o do cliente:

[code]public class SimuladorInterface{

private String mensagem;

public SimuladorInterface() throws RemoteException{
}

public String lerMensagem() throws RemoteException{
    return mensagem;
}

public void enviarMensagem(String mensagem) {
    this.mensagem = mensagem;
}

public static void main(String args[]) {
    try {
        Simulador m = (Simulador) Naming.lookup("rmi://localhost/MensageiroService"); //instancia o objeto remoto
        System.out.println(m.lerMensagem()); //le mensagem chegada do servidor
        m.enviarMensagem("Hello World!"); //envia mensagem ao servidor
    } catch (MalformedURLException e) { //pega uma exceção
        System.out.println();
        System.out.println("MalformedURLException: " + e.toString());
    } catch (RemoteException e) { //pega uma exceção
        System.out.println();
        System.out.println("RemoteException: " + e.toString());
    } catch (NotBoundException e) { //pega uma exceção
        System.out.println();
        System.out.println("NotBoundException: " + e.toString());
    } catch (Exception e) { //pega uma exceção
        System.out.println();
        System.out.println("Exception: " + e.toString());
    }
}

}[/code]

Enfim, eu estava testando 3 exemplos ao mesmo tempo e tenho certeza que acabei fazendo merda. Se preciso posto os outros códigos, mas por enquanto, alguém pode me dar uma mão com isso?

Aparentemente vc está usando métodos não implementados…


 @Override  
     public void enviarMensagem(String msg) throws RemoteException {  
         throw new UnsupportedOperationException("Not supported yet.");  
     }  
  
     @Override  
     public String lerMensagem() throws RemoteException {  
         throw new UnsupportedOperationException("Not supported yet.");  
     } 

posso estar falando besteira…