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

Responder a