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() + ');