Erro RMI + Banco de dados

4 respostas
fabiano-under

Ola Pessoa estou com problema, em relação simples aplicação Rmi

O Servidor esta startando corretamente
Mais no ato do cliente enviar do objeto contato da um erro no Servidor de Java.SQL.Expection

Servidor

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.sql.SQLException;




public class ContatoImpl implements ContatoRemote {

	public ContatoImpl(){}
	
	public void Contato(int id, String nome, String email, String endereco) {
		
		
			ContatoBean con = new ContatoBean();
			
			con.setId(id);
			con.setNome(nome);
			con.setEmail(email);
			con.setEndereco(endereco);
			
		try{
	            ContatoDAO dao = new ContatoDAO();
	            
	            dao.adiciona(con);
	           
	            
	        }catch(SQLException sqle){
	        
	            sqle.printStackTrace();
	        }

	

		
	}

	
	
	
	public static void main(String [] args){
		
		try{
			ContatoImpl obj = new ContatoImpl();
			
			ContatoRemote stub = (ContatoRemote) UnicastRemoteObject.exportObject(obj,0);
			
			Registry registry = LocateRegistry.getRegistry();
			registry.bind("Cont",stub);
			 System.err.println("Servidor carregado.\nAguardando solicitações...");
		}catch (Exception e) {
			System.err.println("Exception: " + e.toString());  
	          e.printStackTrace();
		}
	}



}

Cliente

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class ClienteImpl {

	public ClienteImpl(){}
	
	public static void main(String[] args) {
		
		String host = "localhost";
		try{
			
			Registry registry = LocateRegistry.getRegistry(host);
			
			ContatoRemote stub = (ContatoRemote) registry.lookup("Cont");
			stub.Contato(334, "Cesar", "[email removido]", "rio");
			
		}catch (Exception e) {
			System.err.println("Client exception: " + e.toString());
			e.printStackTrace();
	}

	}
}

4 Respostas

fantomas

SQLException está associado a execuções de instruções no banco de dados, envie um print da Stack Trace e o parte do código onde ocorre o erro (consta a classe e o número da linha do erro na stack trace).

flws

fabiano-under

Caro Amigo olha o erro que dá

Servidor carregado.

Aguardando solicitaþ§es

java.sql.SQLException: com.mysql.jdbc.Driver

at ConnectionFactory.getConnection(ConnectionFactory.java:15)

at ContatoDAO.(ContatoDAO.java:13)

at ContatoImpl.Contato(ContatoImpl.java:25)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)

at sun.rmi.transport.Transport$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Sou

rce)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Sour

ce)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source

)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)
fantomas

Inclua a classe ContatoDAO e a ConnectionFactory ( se for sua ), please.

flws

fabiano-under
Class ContatoDAO
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ContatoDAO {

    private Connection connection;

    public ContatoDAO() throws SQLException {
        this.connection = ConnectionFactory.getConnection();
    }

    public void Pesquisa(ContatoBean contato) throws SQLException { //

        
        Statement stmt;
        
        stmt = this.connection.createStatement();
        ResultSet rs = stmt.executeQuery("select nome from contatos where id="+contato.getId());

       System.out.println("Resultado " + rs.getString(contato.getNome()));
}

    //--------------------------------------------------------------------------------------------------------
    
    
    public void adiciona(ContatoBean contato) throws SQLException {
    java.sql.PreparedStatement stmt = this.connection.prepareStatement("INSERT INTO CONTATOS (ID,NOME,EMAIL,ENDERECO) VALUES (?,?,?,?)");
    stmt.setInt(1, contato.getId());
    stmt.setString(2, contato.getNome());
    stmt.setString(3, contato.getEmail());
    stmt.setString(4, contato.getEndereco());
    stmt.execute();
    stmt.close();
    }
     
}

Class ConnectionFactory

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;

public class ConnectionFactory {
	public static Connection getConnection() throws SQLException{
		try{
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://localhost:3306/exemcaelum","root","root");
                        
		}catch(ClassNotFoundException e){
			
			throw new SQLException(e.getMessage());
		}
		
	}
}
Criado 13 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 4
Participantes 2