Olá.
experimente separar as suas classes em  jars diferentes.
um para o cliente e um para o servidor.
Inicie as aplicações, efetue o teste e nos reporte.

Num pequeno exemplo simplório de distribuição de mensagens utilizei esse esquema e 
funcionou bem.
Trata-se de um ambiente de envio de mensagens de log para o servidor que registra em 
arquivo txt, onde as mensagens sao enviadas por dois clientes. Um via RMI e outro via 
SOAP.
Se alguém tiver interesse posso enviar.
Abraços

willy

> 
> From: "sreng sreng" <[EMAIL PROTECTED]>
> Date: 2002/03/04 Seg PM 05:04:01 GMT-03:00
> To: [EMAIL PROTECTED]
> Subject: [java-list] 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(StreamRemoteCall.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.java: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();
>   }
> }
> 
> 


------------------------------ 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] 
-------------------------------------------------------------------------

Responder a