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