RMI + Exception + Applet

2 respostas
marciosc
Estou tentando fazer um exemplo de RMI "rodar" e esta dando a seguinte exception:
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
	at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
	at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.rebind(Unknown Source)
	at ProdutoServidor.main(ProdutoServidor.java:22)
Código do exemplo:
import javax.naming.Context;
import javax.naming.InitialContext;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.naming.NamingException;

/**
 * Classe servidora de métodos para objetos remotos.
 */
public class ProdutoServidor {
   public static void main(String[] args) throws RemoteException,
                                                 MalformedURLException,
                                                 NamingException {
      System.out.println("Criando objetos...");
      ProdutoImpl p1 = new ProdutoImpl("Pen Drive LG 256MB");
      ProdutoImpl p2 = new ProdutoImpl("HD Maxtor 60GB");

      System.out.println("Publicando objetos no Servico de Nomes...");
      InitialContext initialContext = new InitialContext();
      initialContext.rebind("pen_drive",p1);
      initialContext.rebind("hd_maxtor",p2);

      System.out.println("Aguardando pedidos de clientes...");
   } // public static void main(String[]) throws RemoteException, ...
} // public class ProdutoServidor

Alguem pode me ajudar a resolver?
O erro é gerado no momento em que vai executar - > initialContext.rebind("pen_drive",p1);

depois desse servidor startado, ele sera acessado por métodos de uma applet.

2 Respostas

micheldavid

Acho que você se equivocou ao criar um InitialContext no servidor…

Segundo o exemplo da Sun, você deve usar a classe Naming no servidor, e assim, você disponibilizará acesso aos métodos de uma classe remotamente.
Logo, usa-se o rebind para associar o servidor a um endereço e porta local, assim ele esperará pelas conexões.

mais no site da sun…
http://java.sun.com/developer/onlineTraining/rmi/RMI.html#RMIHostingServer

marciosc

hummmm…, vou dar uma olhada!
na verdade esse foi um exemplo q achei! nao foi coisa minha! kkkk!
mas ta feio! hehehe!
tyo dando uma olhada nesse tutorial da sun! vlw! qlq coisa posto aki.
t++

Criado 15 de março de 2007
Ultima resposta 15 de mar. de 2007
Respostas 2
Participantes 2