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();
}
}
************************************************************************
_________________________________________________________________
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]
-------------------------------------------------------------------------