Pessoal, boa tarde!
Estou fazendo um programa em java cliente servidor(BD e aplicação no mesmo server).
E quando tento fazer o logon do cliente no servidor, vem um erro de rmi. já tentei de tudo e não consigo resolver, já pesquisei em todos os foruns e sites possíveis e mesmo assim nenhuma das resoluções divulgadas resolveram meu código.
Segue código do servidor:
public static void main (String[] args){
System.setProperty("java.rmi.server.codebase","file:///c:/WorkspaceEclipse/MeuSoftware/bin/");
try{
janelaserver = new Principal();
InterfaceImplementada stub = new InterfaceImplementada (janelaserver);
Interface servico = (Interface )UnicastRemoteObject.exportObject(stub,0);
Registry registry = LocateRegistry.createRegistry(1000);
registry.rebind("comunicaserver", servico);
janelaserver.initMenu();
janelaserver.initComponents();
janelaserver.setVisible(true);
}catch(Exception ex){
ex.printStackTrace();
JOptionPane.showMessageDialog(null,"Problemas na execução do servidor: "+ex,"Erro",JOptionPane.ERROR_MESSAGE);
}
...e no cliente:
try{
ip = JOptionPane.showInputDialog(null,"Informe o nome ou ip do servidor:","Server Conect - IP",JOptionPane.QUESTION_MESSAGE);
port = JOptionPane.showInputDialog(null,"Informe a porta do servidor:","Server Conect - Port",JOptionPane.QUESTION_MESSAGE);
srv = (Interface) Naming.lookup( "rmi://"+ip+":"+port+"/comunicaserver" );
}
catch(Exception ex){
JOptionPane.showMessageDialog(null,"Falha na conexão ao servidor.","Atenção",JOptionPane.WARNING_MESSAGE);
}
//Código do evento do botão logar do cliente:
try {
boolean logou = srv.Logon(txflogin.getText().toLowerCase(),passwordfield.getText());
if (logou == true){
setVisible(false);
Frame_Client janelaclient = new Frame_Client(srv.getUsuario(txflogin.getText().toLowerCase()), ip, port, srv);
janelaclient.initMenu();
janelaclient.initComponents();
}else{
JOptionPane.showMessageDialog(null,"Falha ao tentar autenticar o usuário "+txflogin.getText()+"\n\nUsuário ou senha inválida!","Atenção",JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e1){
e1.printStackTrace();
JOptionPane.showMessageDialog(null,"Falha ao tentar se conectar ao servidor.","Erro",JOptionPane.ERROR_MESSAGE);
}
o método do botão logar "srv.logon" está implementado na classe de implementação da interface RMI no servidor e consulta o banco de dados para verificar o usuário e senha se está valido. Caso esteije, retorna True, se não retorna FALSE.
A exception q está ocorrendo é a seguinte:
java.rmi.NoSuchObjectException: no such object in table
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at $Proxy0.Logon(Unknown Source)...
... (continua com aquele mar de linhas vermelhas rss...)
Alguem tem alguma dica?