Me ajudem com rmi!

6 respostas
S

estou tentand fazer uma inserção mais esta dando erro na hora de inserir...
vou postr tdo codigo:

pacote conexão:
package conexao;

import domino.usuarios;
import java.rmi.*;

public class Servidor{
public static void main(String args[]) {
        try {
         usuarios usu = new usuarios();
             Naming.rebind("//localhost/conexao", usu);
                 System.out.println("Cadastro do objeto usu no registry");
        } catch (Exception e) {
				System.out.println("erro: " +e.getMessage());
    	}
   }
}
public class conexao {
private static Connection conn1;
private static String driver;
private static String url;
private static String user;
private static String password;



    public conexao(){
        driver = "org.postgresql.Driver";
        url = "jdbc:postgresql://localhost/pfc";
        user = "postgres";
        password = "jhonatan";
    }

    /**
     * Método responsável por realizar a conexão com o BD
     * @return connection
     * @throws java.lang.ClassNotFoundException
     * @throws java.sql.SQLException
     */
    public static Connection getConnection() throws ClassNotFoundException, SQLException{
        Class.forName("org.postgresql.Driver");
        conn1 = DriverManager.getConnection
       ("jdbc:postgresql://localhost/pfc","postgres","jhonatan");
        return conn1;

    }
}

pacote DAO:

package dao;

import conexao.conexao;
import domino.usuarios;
import java.rmi.*;
import java.sql.*;
import java.sql.SQLException;
import java.io.IOException;
import java.rmi.server.UnicastRemoteObject;


/**
 *
 * @author jhonatan
 */
public class cliente  {
public boolean inserir()throws  RemoteException  {
         usuarios usuarios = new usuarios();

        try {
            //Obtendo a conexão com o BD
            Connection conn1 = conexao.getConnection();

            //Criando a string com sql a ser executada
            String sql = "INSERT INTO cliente VALUES ( ?, ? )";

            //Tratando a sql  a ser executada
            PreparedStatement pst = conn1.prepareStatement( sql );
            //Definindo o primeiro parâmetro
            pst.setInt(1, usuarios.getCodigocliente());
            //Definindo o segundo parâmetro
            pst.setString(2, usuarios.getData());

            //Definindo o terceiro parâmetro

            //Executando a sql
            pst.executeUpdate();

            //Fechando o tratamento da sql
            pst.close(); }

catch (Exception e){ return false;
        }return true;}



}
public interface Icliente extends Remote {
public boolean inserir()throws  RemoteException;
}

pacote Dominio:

*/
public class usuarios extends UnicastRemoteObject implements Iusuarios  {
private int codigocliente;
private String Data;

   public usuarios() throws RemoteException
    {
	  }
     
    public int getCodigocliente() {
        return codigocliente;
    }

    /**
     * @param codigocliente the codigocliente to set
     */
    public void setCodigocliente(int codigocliente) {
        this.codigocliente = codigocliente;
    }

    /**
     * @return the Data
     */
    public String getData() {
        return Data;
    }

    /**
     * @param Data the Data to set
     */
    public void setData(String Data) {
        this.Data = Data;
    }
}
public interface Iusuarios  extends Remote{
public void setCodigocliente(int codigocliente) throws RemoteException;
    public void setData(String Data)throws RemoteException;
}
Visão
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        
        try {
// não pode instanciar
            /*usuarios usuario = new usuarios();
            
            usuario.setCodigocliente(Integer.parseInt(tfcodigo.getText()));*/ //       usuario.setData(tfdata.getText());
            Icliente cliente = (Icliente)Naming.lookup ("//localhost/conexao");
                Iusuarios iusu = (Iusuarios)Naming.lookup ("//localhost/conexao");

                iusu.setCodigocliente(Integer.parseInt(tfcodigo.getText()));
                iusu.setData(tfdata.getText());
            if(cliente.inserir())

				JOptionPane.showMessageDialog(null,"produto inserido com sucesso");
			else
	 		JOptionPane.showMessageDialog(null,"produto não inserido");


        } catch (Exception h) {
            h.printStackTrace();
         		JOptionPane.showMessageDialog(null,h.getMessage());
        }

6 Respostas

javax.skol

sim, mas qual o erro?

AlissonGuj

que erro que ele joga na hora de inserir?

S

segue o erro:

run: java.rmi.NotBoundException: conexao at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106) at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at visão.NewJFrame.jButton1ActionPerformed(NewJFrame.java:102) at visão.NewJFrame.access$000(NewJFrame.java:24) at visão.NewJFrame$1.actionPerformed(NewJFrame.java:49) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6216) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5981) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4583) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

oddy.silva

Bom, ainda tem um pequeno errinho antes. Dá uma olhada bem no seu código:

package dao;  
      
    import conexao.conexao;  
    import domino.usuarios;  
    import java.rmi.*;  
    import java.sql.*;  
    import java.sql.SQLException;  
    import java.io.IOException;  
    import java.rmi.server.UnicastRemoteObject;  
     
     
   /** 
   * 
   * @author jhonatan 
   */  
   public class cliente  {  
   public boolean inserir()throws  RemoteException  {  
          
          //VOCÊ NÃO DEVERIA RECEBER USUARIO NO CONSTRUTOR?   
          usuarios usuarios = new usuarios();  
     
           try {  
               //Obtendo a conexão com o BD  
               Connection conn1 = conexao.getConnection();  
     
               //Criando a string com sql a ser executada  
               String sql = "INSERT INTO cliente VALUES ( ?, ? )";  
     
               //Tratando a sql  a ser executada  
               PreparedStatement pst = conn1.prepareStatement( sql );  
               
               //Aqui o campo codigoCliente esta com o valor 0
                pst.setInt(1, usuarios.getCodigocliente());  
               //Aqui o campo data esta como null
               pst.setString(2, usuarios.getData());  
     
               //Definindo o terceiro parâmetro  
     
               //Executando a sql  
               pst.executeUpdate();  
     
               //Fechando o tratamento da sql  
               pst.close(); }  
     
   catch (Exception e){ return false;  
           }return true;}  
     
     
     
   }

Você instanciou o objeto usario dentro da classe, mas ainda não setou os valores dele. Esse pedaço pode vir a dar pau no futuro.

oddy.silva

Deve estar acontecendo algo parecido aqui:

usuarios usu = new usuarios();  
Naming.rebind("//localhost/conexao", usu);

Veja que você instanciou usuario, ateh aih tudo bem. Mas você não setou valores pra ele.
E no código acima você mandou “reamarrar” conexao, mas ela ainda não está “amarrada”.
É este o erro.

S

mais não foi setado na visão? da uma ollhada… senão … como seria a outra forma

Criado 24 de outubro de 2009
Ultima resposta 26 de out. de 2009
Respostas 6
Participantes 4