2015-02-05 1 views
0

Я начинаю использовать Java RMI. Я попытался сделать пример Hello World, но я этого не сделал. Это мой код удаленного интерфейса:Как разрешить java.rmi.NotBoundException: rmi: // localhost // HelloWorld?

package server; 

import java.rmi.Remote; 
import java.rmi.RemoteException; 

public interface Hello extends Remote 
{ 
    public String saluta(String who) throws RemoteException; 
} 

Это мой класс, который расширяет удаленный интерфейс:

package server; 

import java.rmi.RemoteException; 
import java.rmi.server.UnicastRemoteObject; 

public class HelloWorld extends UnicastRemoteObject implements Hello 
{ 

    private static final long serialVersionUID = 1L; 

    public HelloWorld() throws RemoteException 
    { 
     super(); 
    } 

    public String saluta(String who) throws RemoteException 
    { 
     return "Hello " + who; 
    } 
} 

Это мой сервер:

package server; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
import java.rmi.server.UnicastRemoteObject; 
import java.util.logging.Logger; 

public class Server 
{ 

    static Logger logger = Logger.getLogger("global"); 

    public static void main(String[] args) 
    { 
     System.setProperty("java.security.policy", "policy.all"); 
     if (System.getSecurityManager() == null) 
     { 
      System.setSecurityManager(new SecurityManager()); 
     } 

     try 
     { 
      HelloWorld hello = new HelloWorld(); 

      Registry r = LocateRegistry.createRegistry(9000); 


      logger.info("Creo l'oggetto"); 


      logger.info("...ora ne effettuo il rebind..."); 
      r.rebind("HelloWorld", hello); 
      logger.info("...pronto"); 
     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 

} 

И это мой код клиента :

package hello.client; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
import java.util.logging.Logger; 

public class Client 
{ 
    static Logger logger = Logger.getLogger("global"); 

    public static void main(String[] args) 
    { 
     try 
     { 
      Registry r = LocateRegistry.getRegistry(9000); 
      logger.info("Sto cercando l'oggetto remoto..."); 
      Hello hello = (Hello) r.lookup("rmi://localhost//HelloWorld"); 


      System.out.println(hello.saluta("Graziano")); 

     } catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 

} 

Я создал два разделенных проекта, один для сервера, а другой для клиента, как на изображении по следующей ссылке: image Мой сервер отлично работает, но клиент получает мне эту ошибку: java.rmi.NotBoundException: rmi: // localhost // HelloWorld в строке 18

что случилось ??? Если кто-то может, пожалуйста, напишите мне пример! Спасибо: D

P.S: Возможно, это было бы важно! Это инструмент внешней конфигурации: image2

ответ

0

Избавьтесь от поискового URL. Поисковые URL-адреса относятся к классу Naming. У вас уже есть объект реестра, и он был создан для специализированного хоста и порта. Ergo вам нужно только имя поиска, то же самое, что и при привязке. Просто используйте "HelloWorld".

+0

спасибо, что я использовал эту строку, но ошибка не исчезла :( – chaw359

+0

Упс видеть исправление, я что-то пропустил. – EJP