2015-05-06 6 views
1

Я пытаюсь использовать связь с сервером RMI-сервера. Я написал следующий класс/интерфейс:Сторона клиента Java RMI

  1. Интерфейс RemoteInterface расширяет Remote
  2. Класс HelloStub расширяет UnicastRemoteObject реализует RemoteInterface
  3. Class Server, который я переплетен удаленный OBJ
  4. Клиента класса следующим образом:

    import java.rmi.*; 
    
    public class Client 
    { 
        public static void main(String[] args) 
        { 
         try 
         { 
         String globalName = "rmi//127.0.0.1:1099/hello"; 
         RemoteInterface remoteObj = (RemoteInterface)Naming.lookup(globalName); 
    
         System.out.println(remoteObj.SayHello()); 
    
    
         } 
         catch(Exception e) 
         { 
          System.out.println(e.getMessage()); 
         } 
    

Я не понимаю, почему я должен удалить интерфейс RemoteInterface, чтобы выполнить поиск? Не могу ли я использовать класс HelloStub, который является реальным удаленным объектом?

Спасибо.

+1

Вы должны использовать 'RemoteInterface', чтобы разрешить уровень абстракции. Таким образом, обе стороны (клиент и сервер) не должны знать ничего друг о друге, кроме того, что оба должны реализовать' RemoteInterface' –

+0

Ask противоположный вопрос. Какую пользу вы бы получили от использования класса stub? Никто. И что вы на самом деле здесь делаете? «Ответы на удаленный объект через удаленный интерфейс» - это ответ. Так напишите это. – EJP

ответ

0

Если вы знаете имя класса, вы можете указать экземпляр класса Stub вместо RemoteInterface и передать результат поиска на свой заглушку.

Но какая польза от этого вы получите, определив заглушку вместо интерфейса?

Смежные вопросы