|
| 1 | + |
| 2 | +//And he said unto me, It is done. I am Alpha and Omega, the beginning and the end. I will give unto him that is athirst of the fountain of the water of life freely. (Revelation 21:6) |
| 3 | + |
| 4 | +package com.javarush.task.task32.task3207; |
| 5 | + |
| 6 | +import java.rmi.AlreadyBoundException; |
| 7 | +import java.rmi.NotBoundException; |
| 8 | +import java.rmi.Remote; |
| 9 | +import java.rmi.RemoteException; |
| 10 | +import java.rmi.registry.LocateRegistry; |
| 11 | +import java.rmi.registry.Registry; |
| 12 | +import java.rmi.server.UnicastRemoteObject; |
| 13 | + |
| 14 | +/* |
| 15 | +К серверу по RMI |
| 16 | +*/ |
| 17 | +public class Solution { |
| 18 | + public static final String UNIC_BINDING_NAME = "double.string"; |
| 19 | + public static Registry registry; |
| 20 | + |
| 21 | + //pretend we start rmi client as CLIENT_THREAD thread |
| 22 | + public static Thread CLIENT_THREAD = new Thread(new Runnable() { |
| 23 | + @Override |
| 24 | + public void run() { |
| 25 | + //напишите тут ваш код |
| 26 | + try { |
| 27 | + DoubleString service = (DoubleString) registry.lookup(UNIC_BINDING_NAME); |
| 28 | + System.out.println(service.doubleString("Hello")); |
| 29 | + } catch (RemoteException e) { |
| 30 | + e.printStackTrace(); |
| 31 | + } catch (NotBoundException e) { |
| 32 | + e.printStackTrace(); |
| 33 | + } |
| 34 | + } |
| 35 | + }); |
| 36 | + |
| 37 | + public static void main(String[] args) { |
| 38 | + //pretend we start rmi server as main thread |
| 39 | + Remote stub = null; |
| 40 | + try { |
| 41 | + registry = LocateRegistry.createRegistry(2099); |
| 42 | + final DoubleStringImpl service = new DoubleStringImpl(); |
| 43 | + |
| 44 | + stub = UnicastRemoteObject.exportObject(service, 0); |
| 45 | + registry.bind(UNIC_BINDING_NAME, stub); |
| 46 | + } catch (RemoteException e) { |
| 47 | + e.printStackTrace(); |
| 48 | + } catch (AlreadyBoundException e) { |
| 49 | + e.printStackTrace(); |
| 50 | + } |
| 51 | + |
| 52 | + //start client |
| 53 | + CLIENT_THREAD.start(); |
| 54 | + } |
| 55 | +} |
| 56 | + |
| 57 | +/* |
| 58 | +К серверу по RMI |
| 59 | +
|
| 60 | +Реализуй логику метода run в CLIENT_THREAD. В нем будет имитироваться клиентская часть, которая коннектится к серверу. |
| 61 | +
|
| 62 | +1) Из registry получи сервис с именем UNIC_BINDING_NAME. |
| 63 | +
|
| 64 | +2) Вызови метод у полученного сервиса, передай любой не пустой аргумент. |
| 65 | +
|
| 66 | +3) Выведи в консоль результат вызова метода. |
| 67 | +
|
| 68 | +4) Обработай специфические исключения. |
| 69 | +
|
| 70 | +Метод main не участвует в тестировании. |
| 71 | +
|
| 72 | +
|
| 73 | +
|
| 74 | +
|
| 75 | +
|
| 76 | +Требования: |
| 77 | +
|
| 78 | +1. В методе run() необходимо из registry получить сервис с именем UNIC_BINDING_NAME. |
| 79 | +
|
| 80 | +2. В методе run() необходимо вызвать метод doubleString (String) у полученного сервиса. |
| 81 | +
|
| 82 | +3. В методе run() необходимо вывести в консоль результат вызова метода doubleString (String). |
| 83 | +
|
| 84 | +4. В методе run() должен быть перехват исключения RemoteException. |
| 85 | +
|
| 86 | +5. В методе run() должен быть перехват исключения NotBoundException. |
| 87 | +*/ |
0 commit comments