Olá...(sreng sreng?) Para que um stub seja encontrado pelo RMIRegistry ele precisa estar no seu classpath ou codebase. A menos que o CLASSPATH da sua aplicação faça parte do CLASSPATH do RMIRegistry (geralmente não é o caso) ele não vai achar o stub e vai procurar no codebase que precisa ser definido na sua aplicação (ou via linha de comando ao executar o servidor). O codebase também serve para que um cliente remoto possa fazer download do seu stub.
No exemplo abaixo, usado em um JAR com CLASSPATH único, o RMI registry verá os arquivos que estiverem no CLASSPATH da aplicação. java.util.Properties props = System.getProperties(); props.setProperty("java.rmi.server.codebase", "file://" + props.getProperty("java.class.path")); Normalmente, em vez de file:// você usaria http://, ftp:// ou outro protocolo para que seus clientes remotos possam baixar os stubs. Observe que o código acima pode falhar se java.class.path tiver mais de um caminho (é preciso testar isto antes e partir o string em caminhos separados. O code base pode ter vários caminhos. É só separar com espaços: props.setProperty("java.rmi.server.codebase", "http://abc.com/stubs.jar http://xyz.com/morestubs/")); Você também pode passar a propriedade na linha de comando ou guardar em um arquivo .properties: java -Djava.rmi.server.codebase=http://abc/coisas/stubs.jar myrmi.server.Server java -Djava.rmi.server.codebase="http://abc/coisas/stubs.jar http://xyz/stubs/" myserver.Server Importante: se o codebase contiver um diretório é necessário que termine em "/" (já perdi um domingo inteiro por não observar esse detalhe). []s Helder. -- Helder da Rocha Web Consultant www.argonavis.com.br São Paulo ----- Original Message ----- From: "sreng sreng" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, March 04, 2002 2:04 PM 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 ------------------------------ 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] -------------------------------------------------------------------------