Acessar Bando de Dados usando RMI

0 respostas
S

estou tentando usar uma aplicação rmi... onde os 2 pcs tem a mesma aplicação.. o servidor possui o banco de dados que sera acessado pelo outro computador

na configuração do postgres do servidor eu fiz a configuração:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 169.254.48.173 md5
# IPv6 local connections:
#host all all ::1/128 md5

porem no servidor da esse erro:
22/11/2009 15:26:00 View.RegistrarOcorrencia$4 run
SEVERE: null
java.rmi.ConnectIOException: Exception creating connection to: 192.168.1.6; nested exception is: 
        java.net.SocketException: Network is unreachable: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:614)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
        at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
        at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
        at $Proxy0.setDomainObject(Unknown Source)
        at View.RegistrarOcorrencia.<init>(RegistrarOcorrencia.java:49)
        at View.RegistrarOcorrencia$4.run(RegistrarOcorrencia.java:321)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        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)
Caused by: java.net.SocketException: Network is unreachable: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:180)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
        ... 16 more

vou postar os codigos aki... são mto rsrs

meu controle: Fachada do servidor
public class Fachada extends UnicastRemoteObject implements IFachada {

    //  HashMap<String, IDAO> daos;
    private DomainObject domainObject;
    private Map<String, IDAO> daos;





    public Fachada() throws RemoteException {
   //   this.domainObject = domainObject;


        daos = new HashMap<String, IDAO>();      //  dominio = new  HashMap<String,

        daos.put(Ocorrencia.class.getName(), new DaoOcorrencia());

                daos.put(Produto.class.getName(), new DaoProduto());
                    daos.put(Usuarios.class.getName(), new DaoUsuarios());


    }

         public boolean Login(String parametro,String parametro2) throws RemoteException, SQLException {
                  IDAO dao = daos.get(domainObject.getClass().getName());
                  if(dao.Login(parametro, parametro2)){
                      return true;}else
                      {
                     
                      return false;
                  }

         }


    public boolean inserir() throws RemoteException {

        IDAO dao = daos.get(domainObject.getClass().getName());

        if (dao.inserir(domainObject)) {
            return true;
        } else {

            return false;
        }
    }

minha view:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            JOptionPane.showMessageDialog(null, "aki");
            Ocorrencia ocorrencia = new Ocorrencia();
     
            	
            IFachada fachada = new Fachada();

            Cliente cliente = new Cliente();
            cliente.setCPF(Integer.parseInt(tfcpf.getText()));
            cliente.setNome(tfcliente.getText());
            ocorrencia.setCliente(cliente);




            Servicos servicos = new Servicos();
                TipoServico tiposervico = new TipoServico();
                         tiposervico.setDescricaoServico((String.valueOf(jComboBox1.getSelectedItem())));
                                 tiposervico.setIdServico(Integer.parseInt(codservico.getText()));

            ocorrencia.setServicos(servicos);
            ocorrencia.getServicos().setTiposervico(tiposervico);

            Veiculo veiculo = new Veiculo();
            veiculo.setPlaca(tfplaca.getText());
            veiculo.setNomeVeiculo(tfveiculo.getText());
            ocorrencia.setVeiculo(veiculo);


            ocorrencia.setIDOcorrencia(Integer.parseInt(tfcodigo.getText()));
  
            ocorrencia.setDescricao(tfdescricaoocorrencia.getText());

            ocorrencia.setData(tfdata.getText());
   
            fachada.setDomainObject(ocorrencia);
            fachada.inserir();
            JOptionPane.showMessageDialog(null, "ok salvo");
meu servidor:
public class Servidor {

    public Servidor() {

   try {
		             IFachada fachada = new Fachada();
		             Naming.rebind("rmi://localhost/ServicesServer", fachada);
    System.out.println("Servidor de inciado!!!");

    }
    catch( Exception e ) {
        e.printStackTrace();
    System.out.println( "Trouble: " + e );
    JOptionPane.showMessageDialog(null, e.getMessage());
    }
    }

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

Agora os codigo que irá acessar o servidor:

View:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            JOptionPane.showMessageDialog(null, "aki");
            Ocorrencia ocorrencia = new Ocorrencia();
      
     // chamei o conector remoto do lookup
            	IFachada fachada = ConectorRemoto.getFachada();


            Cliente cliente = new Cliente();
            cliente.setCPF(Integer.parseInt(tfcpf.getText()));
            cliente.setNome(tfcliente.getText());
            ocorrencia.setCliente(cliente);


            Servicos servicos = new Servicos();
                TipoServico tiposervico = new TipoServico();
                         tiposervico.setDescricaoServico((String.valueOf(jComboBox1.getSelectedItem())));
                                 tiposervico.setIdServico(Integer.parseInt(codservico.getText()));

            ocorrencia.setServicos(servicos);
            ocorrencia.getServicos().setTiposervico(tiposervico);

            Veiculo veiculo = new Veiculo();
            veiculo.setPlaca(tfplaca.getText());
            veiculo.setNomeVeiculo(tfveiculo.getText());
            ocorrencia.setVeiculo(veiculo);


            ocorrencia.setIDOcorrencia(Integer.parseInt(tfcodigo.getText()));
     
            ocorrencia.setData(tfdata.getText());
       
            fachada.setDomainObject(ocorrencia);
            fachada.inserir();
            JOptionPane.showMessageDialog(null, "ok salvo");
meu lookup
public class ConectorRemoto {public static IFachada getFachada()throws MalformedURLException, RemoteException, NotBoundException{

    IFachada fachada = (IFachada) Naming.lookup( "rmi://169.254.16.157/ServicesServer" );
    return fachada;}}
Criado 22 de novembro de 2009
Respostas 0
Participantes 1