Antes de inicializar o servidor RMI vc "setou" o CLASSPATH indicando o local onde está o pacote br.com.aopec.gabriel.servers ??????
----- Original Message ----- From: sreng sreng <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, March 04, 2002 7:01 PM Subject: [java-list] Problemas em servidor RMI > Olá, colegas da lista: > > Estou desenvolvendo um servidor RMI para um projeto interno. Mas tenho um > problema muito chato. Compilo a classe do servidor (implementação da minha > interface remota) com sucesso e construo a classe stub (através de rmic > -v1.2 nomeDaClasse). Quando executo o servidor, esta execção: > > ******************************************************************** > java.rmi.ServerException: RemoteException occurred in server thread; nested > exception is: > java.rmi.UnmarshalException: error unmarshalling arguments; nested > exception is: > java.lang.ClassNotFoundException: > br.com.aopec.gabriel.servers.RMIPersistenciaImpl_Stub > > java.rmi.UnmarshalException: error unmarshalling arguments; nested exception > is: > java.lang.ClassNotFoundException: > br.com.aopec.gabriel.servers.RMIPersistenciaImpl_Stub > > java.lang.ClassNotFoundException: > br.com.aopec.gabriel.servers.RMIPersistenciaImpl_Stub > > at > sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteC all.java:245) > > at > sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:220) > > at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:354) > > at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) > > at java.rmi.Naming.rebind(Naming.java:160) > > at > br.com.aopec.gabriel.servers.RMIPersistenciaImpl.main(RMIPersistenciaImpl.ja va:160) > ********************************************************************** > > Informando que a classe stub não foi encontrada. De fato, minha classe > stub é APAGADA durante a execução. Alguém já teve esse tipo de problema? > Alguém pode me ajudar? > > > Segue o código fonte da minha classe servidora, para referência: > > ********************************************************************** > package br.com.aopec.gabriel.servers; > > import java.rmi.server.*; > import java.rmi.*; > import br.com.aopec.gabriel.objetos.*; > import br.com.aopec.gabriel.exceptions.*; > import java.sql.*; > import java.util.*; > /** > * Title: AOPEC Gabriel: Sistema de Mensagens > * Description: Sistema de compartilhamento e registro de mensagens AOPEC. > * Copyright: Copyright (c) 2001 > * Company: AOPEC > * @author Cláudio Marcelo Silva > * @version 1.0 > */ > > public class RMIPersistenciaImpl extends UnicastRemoteObject implements > RMIPersistencia{ > private Connection conexao; > > public RMIPersistenciaImpl()throws RemoteException { > try{ > Class.forName("oracle.jdbc.driver.OracleDriver"); > conexao = > DriverManager.getConnection("jdbc:oracle:thin:@164.137.86.230:1521:bd01", > "alunoJava", "alunoJava"); > }catch(Exception e){ > e.printStackTrace(); > } > } > > public void addUsuario(Usuario user)throws RemoteException{ > try{ > Statement st = conexao.createStatement(); > String values = "'" + user.getID() + "', '" + user.getNome() + "', " + > user.getCargoID() + ", '" + user.getEMail() + "', '" + user.getTelefone() + > "'"; > st.executeUpdate("Insert into Usuario VALUES(" + values + ")"); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao adicionar usuário"); > e.printStackTrace(System.err); > } > } > > public void removeUsuario(Usuario user)throws RemoteException{ > try{ > Statement st = conexao.createStatement(); > st.executeUpdate("Delete from Usuario where user_id='" + user.getID() > + "'"); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao remover usuario"); > e.printStackTrace(System.err); > } > } > > public void registraMensagem(AbstractMsg msg)throws RemoteException{ > try{ > Statement st = conexao.createStatement(); > String values = "'" + msg.getID() + "', " + msg.getTitulo() + "', '" + > msg.getCorpo() + "', '" + msg.getRemID() + "', " + msg.getDestID() + "'"; > st.executeUpdate("Insert Into Mensagem values(" + values + ")"); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao registrar mensagem"); > e.printStackTrace(System.err); > } > } > > public AbstractMsg[] listaMensagensUsuario(Usuario user)throws > RemoteException{ > AbstractMsg[] msgArray = null; > try{ > Statement st = conexao.createStatement(); > ResultSet rsConta = st.executeQuery("Select Count(*) AS Conta FROM > Mensagem WHERE Destino_id = '" + user.getID() + "'"); > int contagem = rsConta.getInt("Conta"); > rsConta.close(); > ResultSet rs = st.executeQuery("SELECT Corpo, Titulo FROM Mensagem > WHERE Destino_id = '" + user.getID() + "'"); > msgArray = new AbstractMsg[contagem]; > int index = 0; > while(rs.next()){ > AbstractMsg msg = new Mensagem(); > msg.setCorpo(rs.getString("corpo")); > msg.setTitulo(rs.getString("titulo")); > msgArray[index] = msg; > index++; > } > rs.close(); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao listar mensagem para o usuario " + > user.getNome() + "@" + user.getID()); > e.printStackTrace(System.err); > } > return msgArray; > } > > public AbstractMsg[] listaMensagensEnviadas(Usuario user)throws > RemoteException{ > AbstractMsg[] msgArray = null; > try{ > Statement st = conexao.createStatement(); > ResultSet rsConta = st.executeQuery("Select Count(*) AS Conta FROM > Mensagem WHERE Rem_id = '" + user.getID() + "'"); > int contagem = rsConta.getInt("Conta"); > rsConta.close(); > ResultSet rs = st.executeQuery("SELECT Corpo, Titulo FROM Mensagem > WHERE Rem_id = '" + user.getID() + "'"); > msgArray = new AbstractMsg[contagem]; > int index = 0; > while(rs.next()){ > AbstractMsg msg = new Mensagem(); > msg.setCorpo(rs.getString("corpo")); > msg.setTitulo(rs.getString("titulo")); > msgArray[index] = msg; > index++; > } > rs.close(); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao listar mensagem para o usuario " + > user.getNome() + "@" + user.getID()); > e.printStackTrace(System.err); > } > return msgArray; > } > > public AbstractMsg[] listaMensagensRoot(Usuario user)throws > RemoteException, NotRootException{ > if(user.getID().equals("0")) throw new NotRootException(); > AbstractMsg[] msgArray = null; > try{ > Statement st = conexao.createStatement(); > ResultSet rsConta = st.executeQuery("Select Count(*) AS Conta FROM > Mensagem"); > int contagem = rsConta.getInt("Conta"); > rsConta.close(); > ResultSet rs = st.executeQuery("SELECT Corpo, Titulo FROM Mensagem"); > msgArray = new AbstractMsg[contagem]; > int index = 0; > while(rs.next()){ > AbstractMsg msg = new Mensagem(); > msg.setCorpo(rs.getString("corpo")); > msg.setTitulo(rs.getString("titulo")); > msgArray[index] = msg; > index++; > } > rs.close(); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao listar mensagem para o usuario Root"); > e.printStackTrace(System.err); > } > return msgArray; > } > > public void removeMensagem(AbstractMsg msg)throws RemoteException{ > try{ > Statement st = conexao.createStatement(); > st.executeUpdate("Delete from Mensagem where msg_id='" + msg.getID() + > "'"); > st.close(); > }catch(Exception e){ > System.err.println("Falha ao apagar a mensagem " + msg.getTitulo() + > "@" + msg.getID()); > e.printStackTrace(System.err); > } > } > > public static void main(String args[]){ > try{ > System.out.println("Iniciando serviço de persistencia..."); > RMIPersistenciaImpl server = new RMIPersistenciaImpl(); > Naming.rebind("//164.137.86.103/PServer", server); > }catch(Exception e){ > System.err.println("Falha ao iniciar servidor"); > e.printStackTrace(System.err); > } > } > > public void finalize(){ > try{ > conexao.close(); > }catch(Exception e){ > e.printStackTrace(System.err); > } > System.gc(); > } > } > ************************************************************************ > > _________________________________________________________________ > O MSN Photos é o jeito mais fácil de compartilhar, editar e imprimir suas > fotos preferidas: http://photos.msn.com.br/support/worldwide.aspx > > > ------------------------------ LISTA SOUJAVA ---------------------------- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > historico: http://www.mail-archive.com/java-list%40soujava.org.br > para sair da lista: envie email para [EMAIL PROTECTED] > ------------------------------------------------------------------------- > ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------