Fórum Salvar Dados em Banco de dados RMI #6956

22/06/2009

0


Bom dia!!

Prezados estou com projeto de RMI, porem não consigo fazer com que os Dados sejam salvos no Banco de Dados.
Preciso fazer as seguintes alterações
- Inserir;
- Localizar;
- Editar;
- Excluir;

Estarei utilizando métodos RMI para atualizar as classes clientes.
Como faço para enviar o projeto para q seja mais fácil a visualização dos erros?

package teste;

import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.awt.event.KeyEvent;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Toolkit;

import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;

import com.sun.corba.se.impl.encoding.CodeSetConversion.BTCConverter;

import Banco.Conexao;
import Banco.Cprodutos;
import Est.Model.*;
import Est.Servidor.*;
import java.util.ArrayList;
public class Produto extends JFrame {
   
    private static final long serialVersionUID = 1L;
    protected static final int YES_NO_OPTION = 0;
    protected static final int QUESTION_MESSAGE = 0;
    /*
     * Declaração das Variáves
     */
    private JPanel jContentPane = null;
    private JPanel jPanel = null;
    private JLabel jLProdCodigo= null;
    private JLabel jLProdNome = null;
    private JLabel jLProdUnid = null;
    private JLabel jLProdPreco = null;
    private JLabel jLProdMin = null;
    private JLabel jLProdMax = null;
    private JTextField jTFProdCodigo = null;
    private JTextField jTFProdNome     = null;
    private JTextField jTFProdPreco = null;
    private JTextField jTFProdUnid    =    null;
    private JTextField jTFProdMin = null;
    private JTextField jTFProdMax = null;
    private JButton jBSalvarProduto = null;
    private JButton jBEditarProduto = null;
    private JButton jBLocalizaProduto = null;
    private JButton jBExcluProduto = null;   
   
    /*
     * Inicialização variável para habilitar botões da interface
     */
    private int controle=1;
    private double valor;
   
    InterfaceEstoque estoque;
   
    Cprodutos cproduto;
    Conexao conn;
    /*
     * Atributos de campos e Label
     */
    private JPanel getJPanel() {
        if (jPanel == null) {
            jLProdCodigo = new JLabel();
            jLProdCodigo.setBounds(new Rectangle(13, 15, 50, 16));
            jLProdCodigo.setText("Codigo:");
            jLProdNome = new JLabel();
            jLProdNome.setBounds(new Rectangle(13, 40, 50, 16));
            jLProdNome.setText("Nome:");
            jLProdPreco = new JLabel();
            jLProdPreco.setBounds(new Rectangle(195, 65, 50, 16));
            jLProdPreco.setText("Preço:");
            jPanel = new JPanel();
            jLProdUnid = new JLabel();
            jLProdUnid.setBounds(new Rectangle(13, 65, 50, 16));
            jLProdUnid.setText("Unidade:");
            jLProdMin = new JLabel();
            jLProdMin.setBounds(new Rectangle(13, 90, 60, 16));
            jLProdMin.setText("Est.Mím.:");
            jLProdMax = new JLabel();
            jLProdMax.setBounds(new Rectangle(195, 90, 60, 16));
            jLProdMax.setText("Est.Máx.:");           
            jPanel.setLayout(null);
            jPanel.add(jLProdCodigo, null);
            jPanel.add(jLProdNome, null);
            jPanel.add(jLProdPreco, null);
            jPanel.add(jLProdUnid, null);
            jPanel.add(jLProdMin, null);
            jPanel.add(jLProdMax, null);           
            jPanel.add(getJTFProdCodigo(), null);
            jPanel.add(getJTFProdNome(), null);
            jPanel.add(getJTFProdUnid(), null);
            jPanel.add(getJTFProdMin(), null);
            jPanel.add(getJTFProdMax(), null);           
            jPanel.add(getJTFProdPreco(), null);
            jPanel.add(getJBSalvarProduto(), null);
            jPanel.add(getJBEditarProduto(), null);
            jPanel.add(getJBLocalizaProduto(), null);
            jPanel.add(getJBExcluProduto(), null);
       
        }
        return jPanel;
    }

    /*
     * Definição do campo tipo texto Código Produto
     */
    private JTextField getJTFProdCodigo() {
        if (jTFProdCodigo == null) {
            jTFProdCodigo = new JTextField();
            jTFProdCodigo.setBounds(new Rectangle(75, 13, 87, 20));
        }
        return jTFProdCodigo;
    }

    /*
     * Definição do campo tipo texto Nome Produto
     */
    private JTextField getJTFProdNome() {
        if (jTFProdNome == null) {
            jTFProdNome = new JTextField();
            jTFProdNome.setBounds(new Rectangle(75, 38, 270, 20));
        }
        return jTFProdNome;
    }

    /*
     * Definição do campo tipo texto Preço Produto
     */
    private JTextField getJTFProdPreco() {
        if (jTFProdPreco == null) {
            jTFProdPreco = new JTextField();
            jTFProdPreco.setBounds(new Rectangle(257, 63, 87, 20));
        }
        return jTFProdPreco;
    }
   
    /*
     * Definição do campo tipo texto Unidade Produto
     */
    private JTextField getJTFProdUnid() {
        if (jTFProdUnid == null) {
            jTFProdUnid = new JTextField();
            jTFProdUnid.setBounds(new Rectangle(75, 63, 87, 20));
        }
        return jTFProdUnid;
    }

    /*
     * Definição do campo tipo texto Estoque Mínimo Produto
     */
    private JTextField getJTFProdMin() {
        if (jTFProdMin == null) {
            jTFProdMin = new JTextField();
            jTFProdMin.setBounds(new Rectangle(75, 88, 87, 20));
        }
        return jTFProdMin;
    }

    /*
     * Definição do campo tipo texto Estoque Máximo Produto
     */
    private JTextField getJTFProdMax() {
        if (jTFProdMax == null) {
            jTFProdMax = new JTextField();
            jTFProdMax.setBounds(new Rectangle(257, 88, 87, 20));
        }
        return jTFProdMax;
    }
   
   
    /*
     * Função Botão Salvar, Registra a conecção com o BD e envia dados a serem salvos
     */
    private JButton getJBSalvarProduto() {
        if (jBSalvarProduto == null) {
            jBSalvarProduto = new JButton();
            jBSalvarProduto.setBounds(new Rectangle(12, 130, 70, 22));
            jBSalvarProduto.setText("Salvar");
            jBSalvarProduto.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                   
                try {
           
                    Registry registroLocal = LocateRegistry.getRegistry("localhost",5000);
                    Mensageiro mensageiroLocal = (Mensageiro) registroLocal.lookup( "local" );                                           
                                       
                    Prod produto = new Prod();
                    produto.setProdCod(jTFProdCodigo.getText());
                    produto.setProdNome(jTFProdNome.getText());
                    produto.setProdUnid(jTFProdUnid.getText());
                    produto.setProdPreco(Double.parseDouble(jTFProdPreco.getText()));
                    produto.setProdMin(Double.parseDouble(jTFProdMin.getText()));
                    produto.setProdMax(Double.parseDouble(jTFProdMax.getText()));
                   
                    cproduto.CadastrarProduto(produto);
                    mensageiroLocal.cadastrarProduto(produto);
                   
                    //Após inserir o produto no banco local, recuperar do banco o código do produto;
                   
                    int codigoProduto = 11;
                   
                    Estoque e1 = new Estoque(codigoProduto, produto.getProdMin(), produto.getProdMax(),0);
                    ArrayList<Estoque> list = new ArrayList<Estoque>();
                    list.add(e1);
                   
                    boolean resultado = estoque.InserirProduto(list);
                   
                    if (resultado){
                        System.out.println("Produto inserido no estoque");
                    }
                    else{
                        System.out.println("Erro ao inserir o produto no estoque");
                    }
                   
                    //Editar
                   
                    Estoque e2 = new Estoque(2,0,100,0);
                   
                    estoque.UpdateProduto(e2);
                   
                   
                    //Remover
                    Estoque e3 = new Estoque();
                    e3.setIdProduto(5);
                   
                    ArrayList<Estoque> list2 = new ArrayList<Estoque>();
                    list2.add(e3);
                   
                    estoque.RemoverProduto(list2);   
                                       
                } catch (AccessException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (RemoteException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
               
                    if (valor==1)
                    {
                        jBLocalizaProduto.setEnabled(true);
                        jBEditarProduto.setEnabled(false);
                        jBExcluProduto.setEnabled(false);
                 
                        limparcampos();
                    }
                }
            });
        }
        return jBSalvarProduto;
    }

    protected byte[] Prod(String ProdNome) {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * This method initializes jBEditarProduto   
     *    
     * @return javax.swing.JButton   
     */
    private JButton getJBEditarProduto() {
        if (jBEditarProduto == null) {
            jBEditarProduto = new JButton();
            jBEditarProduto.setBounds(new Rectangle(97, 130, 71, 21));
            jBEditarProduto.setText("Editar");
            jBEditarProduto.setEnabled(false);
            jBEditarProduto.setMnemonic(KeyEvent.VK_UNDEFINED);
            jBEditarProduto.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    controle=2;
                    jTFProdCodigo.setEnabled(true);
                    jTFProdNome.setEnabled(true);
                    jTFProdUnid.setEnabled(true);
                    jTFProdPreco.setEnabled(true);
                    jTFProdMin.setEnabled(true);
                    jTFProdMax.setEnabled(true);
                    jBEditarProduto.setEnabled(false);
               
                }
            });
        }
        return jBEditarProduto;
    }

    /**
     * This method initializes jBLocalizaProduto   
     *    
     * @return javax.swing.JButton   
     */
    private JButton getJBLocalizaProduto() {
        if (jBLocalizaProduto == null) {
            jBLocalizaProduto = new JButton();
            jBLocalizaProduto.setBounds(new Rectangle(175, 130, 90, 22));
            jBLocalizaProduto.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    String Produto = JOptionPane.showInputDialog("Informe o Nome do Produto:");
                    controle = 2;
                   
                   
                    try {
                       
                        Registry registroLocal = LocateRegistry.getRegistry("localhost",5000);
                        Mensageiro mensageiroLocal = (Mensageiro) registroLocal.lookup( "local" );
                                                           
                        Registry registroCompras = LocateRegistry.getRegistry("localhost",5001);
                        Mensageiro mensageiroCompras = (Mensageiro) registroCompras.lookup( "compras" );
                       
                        Registry registroEstoque = LocateRegistry.getRegistry("localhost",5002);
                        Mensageiro mensageiroEstoque = (Mensageiro) registroEstoque.lookup( "estoque" );
                       
                        Registry registroVendas = LocateRegistry.getRegistry("localhost",5003);
                        Mensageiro mensageiroVendas = (Mensageiro) registroVendas.lookup( "vendas" );
                                                       

                        Prod produto = new Prod();
                        produto.setProdNome(jTFProdNome.getText());
                        produto.setProdUnid(jTFProdUnid.getText());
                        produto.setProdPreco(Double.parseDouble(jTFProdPreco.getText()));
                        produto.setProdMin(Double.parseDouble(jTFProdMin.getText()));
                        produto.setProdMax(Double.parseDouble(jTFProdMax.getText()));

                                           
                       
                    } catch (AccessException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (RemoteException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (NotBoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                   
                if(valor==1)
                {
                    jBEditarProduto.setEnabled(true);
                    jBExcluProduto.setEnabled(true);
                    jBLocalizaProduto.setEnabled(false);
                    jTFProdCodigo.setEnabled(false);
                    jTFProdNome.setEnabled(false);
                    jTFProdUnid.setEnabled(false);
                    jTFProdPreco.setEnabled(false);
                    jTFProdMax.setEnabled(false);
                    jTFProdMin.setEnabled(false);
                }
                else
                    JOptionPane.showMessageDialog(null,"Produto não Encontrado!!");

                }
            });
            jBLocalizaProduto.setText("Localizar");
        }
        return jBLocalizaProduto;
    }

    /**
     * This method initializes jBExcluProduto   
     *    
     * @return javax.swing.JButton   
     */
    private JButton getJBExcluProduto() {
        if (jBExcluProduto == null) {
            jBExcluProduto = new JButton();
            jBExcluProduto.setBounds(new Rectangle(275, 129, 73, 22));
            jBExcluProduto.setEnabled(false);
            jBExcluProduto.setText("Excluir");
            jBExcluProduto.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    int resposta = JOptionPane.showConfirmDialog(null, "Confirma a Exclusão do Registro?",
                            "Sistema", YES_NO_OPTION, QUESTION_MESSAGE);

                    if (resposta==0)
                    {
                        try {
                           
                            Registry registroLocal = LocateRegistry.getRegistry("localhost",5000);
                            Mensageiro mensageiroLocal = (Mensageiro) registroLocal.lookup( "local" );

                            Prod produto = new Prod();
                            produto.setProdNome(jTFProdNome.getText());
                            produto.setProdUnid(jTFProdUnid.getText());
                            produto.setProdPreco(Double.parseDouble(jTFProdPreco.getText()));
                            produto.setProdMin(Double.parseDouble(jTFProdMin.getText()));
                            produto.setProdMax(Double.parseDouble(jTFProdMax.getText()));

                            mensageiroLocal.cadastrarProduto(produto);
                           
                        } catch (AccessException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        } catch (RemoteException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        } catch (NotBoundException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        } catch (Exception e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                    }
                   
                   
                    if (valor==1)
                    {
                        jBExcluProduto.setEnabled(false);
                        jBEditarProduto.setEnabled(false);
                        jTFProdCodigo.setEnabled(true);
                        jTFProdNome.setEnabled(true);
                        jTFProdUnid.setEnabled(true);
                        jTFProdPreco.setEnabled(true);
                        jTFProdMax.setEnabled(true);
                        jTFProdMin.setEnabled(true);
                        JOptionPane.showMessageDialog(null,"Dados Atualizados...");
                    }
                    else
                        JOptionPane.showMessageDialog(null,"Exclusão Cancelada..");   
                   
           
               
                }
            });
        }
        return jBExcluProduto;
    }

   
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Produto thisClass = new Produto();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    /**
     * This is the default constructor
     */
    public Produto() {
        super();
        initialize();
        Registry registroEstoque;
        try {
            registroEstoque = LocateRegistry.getRegistry("localhost",5001);
            estoque = (InterfaceEstoque) registroEstoque.lookup( "ServicoEstoque" );
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        conn = new Conexao();
        cproduto = new Cprodutos();
       
    }

    /**
     * This method initializes this
     *
     * @return void
     */
    private void initialize() {
        this.setSize(368, 206);
        this.setContentPane(getJContentPane());
        this.setTitle("Cadastro de Produtos");
       
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (int)(dim.width-this.getWidth())/2;
        int y = (int)(dim.height-this.getWidth())/2;
        this.setLocation(x,y);
    }

    /**
     * This method initializes jContentPane
     *
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getJPanel(), BorderLayout.CENTER);
        }
        return jContentPane;
    }
   
    public void limparcampos()
    {
        jTFProdCodigo.setText("");
        jTFProdNome.setText("");
        jTFProdUnid.setText("");
        jTFProdPreco.setText("");
        jTFProdMin.setText("");
        jTFProdMax.setText("");
       
    }

}



Warley Coelho

Warley Coelho

Responder

Posts

22/06/2009

Warley Coelho

Responder

Gostei + 0

22/06/2009

Henrique Weissmann

Warlei,

por favor, me envie todos os logs de saida da sua aplicação para que eu possa analisá-los e, a partir dai, ver o que pode estar dando errado, ok?

Aguardo seu retorno.
Responder

Gostei + 0

22/06/2009

Warley Coelho


Bom dia!!

Caro Henrique;

Disponibilizei o projeto no Disco virtual em https://www.devmedia.com.br/imagens/discovirtual/211303/RMI/Projeto.rar, no caso vc estava precisando era dos erros que apresentam no console?

java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    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.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at teste.Produto.<init>(Produto.java:469)
    at teste.Produto$5.run(Produto.java:453)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.net.ConnectException: Connection refused: 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:179)
    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)
    ... 14 more
Responder

Gostei + 0

22/06/2009

Henrique Weissmann

Warlei,

com base no log que você me enviou, segue uma lista de itens a serem verificados em sua aplicação:

* No servidor o serviço encontra-se em execução?

* Caso o serviço no servidor se encontre em execução, há algum firewall bloqueando a porta de comunicação?

* O host localhost pode ser um problema. Já vi casos em que o nome localhost encontrava-se alterado nas configurações de DNS do computador. Nestes casos, tente enviar o seu chamado para o IP 127.0.0.1 (que corresponde ao localhost) ou mesmo o IP do seu computador e verifique o resultado.
   No caso do Windows, você deve verificar também nesta terceira hipótese o arquivo lmhosts para ver se algo foi alterado. Caso tenha sido (e você não encontre uma linha definindo o nome lmhosts), você pode adicioná-lo manualmente (não tenho certeza se é necessário reiniciar o computador, sendo assim eu o reiniciaria neste caso)
   Mais informações sobre o arquivo LMHOSTS podem ser encontradas aqui: http://www.guiadohardware.net/termos/lmhosts

Verifique estes itens e em seguida entre em contato conosco novamente para que possamos dar prosseguimento a este caso.
Responder

Gostei + 0

22/06/2009

Warley Coelho

Boa Tarde!

Prezado Henrique;


* O servidor de serviço encontra-se em execução - OK!

* O firewall não está bloqueando a porta de comunicação - OK!

* Fiz a alteração do host localhost  para 127.0.0.1 e o erro persiste.

java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    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.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at teste.Produto.<init>(Produto.java:469)
    at teste.Produto$5.run(Produto.java:453)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.net.ConnectException: Connection refused: 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:179)
    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)
    ... 14 more

O arquivo lmhosts não consegui indentificar.

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Este ‚ um exemplo de arquivo LMHOSTS utilizado pelo TCP/IP do Microsoft
# Windows.
#
# Este arquivo cont‚m os mapeamentos de endere‡os IP para os nomes (NetBIOS)
# dos computadores. Cada entrada deve estar em uma linha separada. O endere‡o
# IP deve ser colocado na primeira coluna seguido pelo nome do computador
# correspondente. O endere‡o IP e o nome do computador devem estar separados
# por pelo menos um espa‡o ou caractere de tabula‡ao. O caractere "#" ‚
# usado geralmente para indicar o in¡cio de um coment rio (veja as exce‡oes
# abaixo).
#
# Este arquivo ‚ compat¡vel com os arquivos LMHOSTS do TCP/IP do Microsoft
# LAN Manager 2.x., e oferece as seguintes extensoes:
#
#      #PRE
#      #DOM:<dom¡nio>
#      #INCLUDE <nome_de_arquivo>
#      #BEGIN_ALTERNATE
#      #END_ALTERNATE
#      \0xnn (aceita caracteres nao imprim¡veis)
#
# Qualquer entrada no arquivo que seja seguida pelos caracteres "#PRE" ser
# carregada previamente no cache de nomes. Por padrao, as entradas nao sao
# carregadas previamente e sao analisadas somente ap¢s falhas na resolu‡ao de
# nomes dinƒmica.
#
# Qualquer entrada no arquivo que seja seguida por "#DOM:<dom¡nio>" ser
# associada ao dom¡nio especificado por <dom¡nio>. Isso afeta a forma como os
# servi‡os Localizador e Logon atuam nos ambientes TCP/IP. Para carregar
# previamente o nome do host associado … entrada #DOM, ‚ necess rio adicionar
# tamb‚m a cl usula #PRE … linha. O dom¡nio sempre ‚ carregado previamente,
# apesar de nao ser exibido quando o cache de nomes ‚ exibido.
#
# A especifica‡ao de "#INCLUDE <nome_de_arquivo>" for‡a o software RFC
# NetBIOS (NBT) a procurar e analisar o <nome_de_arquivo> como se fosse
# local. <nome_de_arquivo> ‚ geralmente um nome UNC, permitindo que um
# arquivo lmhosts central seja mantido em um servidor. Sempre ‚ necess rio
# fornecer um mapeamento para o endere‡o IP de um servidor antes do #INCLUDE.
# Esse mapeamento deve conter a cl usula #PRE. Al‚m disso, o compartilhamento
# "public" no exemplo abaixo deve estar na lista LanManServer de
# "NullSessionShares" para que m quinas clientes possam ler o arquivo LMHOSTS.
# Simplesmente adicione "public" … lista que se encontra na chave do Registro
# \machine\system\currentcontrolset\services\lanmanserver\parameters\nullsessionshares.
#
# As palavras-chave #BEGIN_ e #END_ALTERNATE permitem agrupar v rias
# senten‡as #INCLUDE. Um £nico #INCLUDE que tenha ˆxito far  com que todo
# o grupo tamb‚m o tenha.
#
# Finalmente, caracteres nao imprim¡veis podem ser incorporados a esses
# mapeamentos, primeiro colocando-se aspas nos nomes NetBIOS e, em seguida,
# utilizando-se a nota‡ao \0xnn para especificar um valor hexadecimal para
# um caractere nao imprim¡vel.
#
# O seguinte exemplo ilustra todas essas extensoes:
#
# 102.54.94.97     rino     #PRE #DOM:conexao de rede #C.D. do grupo de rede
# 102.54.94.102    "nomeaplic \0x14"                  #servidor aplic especiais
# 102.54.94.123    popular  #PRE                      #servidor de origem
# 102.54.94.117    srvlocal #PRE                      #devido ao include
#
# #BEGIN_ALTERNATE
# #INCLUDE \\srvlocal\public\lmhosts
# #INCLUDE \\rino\public\lmhosts
# #END_ALTERNATE
#
# No exemplo acima, o servidor "nomeaplic" cont‚m um caractere especial em
# seu nome, os nomes de servidores "popular" e "servlocal" sao previamente
# carregados e o nome do servidor "rino" ‚ especificado para que possa ser
# utilizado para um posterior #INCLUDE no arquivo lmhosts central se
# o sistema "localsrv" nao estiver dispon¡vel.
#
# Note que o arquivo inteiro ‚ analisado, insive os coment rios, sempre
# que ele ‚ verificado. Por isso, deve-se manter o menor n£mero poss¡vel
# de coment rios para se aumentar o desempenho. Sendo assim, nao ‚
# recomend vel se adicionar entradas de arquivos lmhosts ao final do arquivo.







Responder

Gostei + 0

22/06/2009

Henrique Weissmann

Warley,

executando o seu código, me deparei com a seguinte mensagem de erro:

java.rmi.NotBoundException: ServicoEstoque
        at sun.rmi.registry.RegistryImpl.lookup(Unknown Source)
        at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
        at sun.rmi.server.UnicastServerRef.oldDispatch(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 So

que aponta para a linha 469 da sua classe Produto (no cliente) cujo conteúdo é:
estoque = (InterfaceEstoque) registroEstoque.lookup( "ServicoEstoque" );

Verificando a classe Servidor (pacote servidor), percebi que você está registrando o serviço como

ContratoProduto servico = new ContratoProdutoImp();
            Registry registry = LocateRegistry.createRegistry(5001);
            registry.bind("produto",servico);
            System.out.println ("Servidor Compras Iniciado...");

ou seja, ao registrar o serviço no seu servidor RMI com outro nome, o cliente não consegue encontrá-lo e, consequentemente, também não consegue abrir uma conexão com o mesmo.

Encontrei na Internet uma introdução a RMI muito interessante que você pode acessar no endereço abaixo:
http://www.javacoffeebreak.com/articles/javarmi/javarmi.html


Responder

Gostei + 0

22/06/2009

Warley Coelho


Henrique;

O trabalho consiste em modulos, eu fique com a parte de produto e tenho q disponibilizar acesso para outros modolos como, compras, Estoque e Vendas.
As classes compras e Estoque estão sendo enviada atraves de ArrayList, mas se for comentada a parte de Estoque está ocorrendo o erro,  estou conseguindo cadastrar no estoque os produtos. Mas no meu proprio banco não consigo.

Sds...

Responder

Gostei + 0

22/06/2009

Henrique Weissmann

Warley,

no código fonte que analisei por enquanto só encontrei o problema que citei no post anterior: o cliente está pedindo o serviço "ServicoEstoque" que não se encontra registrado no servidor (porque no mesmo está sendo registrado como "produto").

Não cheguei a tentar persistir os dados em um banco de dados porque não tenho a sua estrutura de tabelas para que eu pudesse ver a execução do mesmo após a conexão do cliente com o servidor.
Responder

Gostei + 0

24/06/2009

Warley Coelho


Boa Tarde!!

Prezado Henrique;

O problema foi resolvido, obrigado pela ajuda.
Por gentileza poderia fechar o chamando.

Abraços

Warley Amaral
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar