Главная /
Построение распределенных систем на Java /
В какой строке кода BillingServiceImpl происходит чтение из сети аргументов, передаваемых в метод processOperations: 1 // BillingServiceImpl.java 2 // BillingServiceImpl реализует удаленный интерфейс BillingService для 3 // предоставления удаленного объек
В какой строке кода BillingServiceImpl
происходит чтение из сети аргументов, передаваемых в метод processOperations
:
1 // BillingServiceImpl.java
2 // BillingServiceImpl реализует удаленный интерфейс BillingService для
3 // предоставления удаленного объекта BillingService
4 package com.asw.rmi.ex2;
5
6 // Набор базовых пакетов Java
7 import java.rmi.*;
8 import java.util.*;
9 import java.rmi.server.*;
10
11 public class BillingServiceImpl extends UnicastRemoteObject
12 implements BillingService {
13
14 private Hashtable hash; // хэш-таблица для хранения карт
15 // инициализация сервера
16 public BillingServiceImpl() throws RemoteException{
17 super();
18 hash = new Hashtable();
19 }
20
21 // реализация метода addNewCard интерфейса BillingService
22 public void addNewCard(Card card) throws RemoteException {
23
24 hash.put(card.cardNumber, card);
25 }
26
27 // реализация метода processOperations интерфейса BillingService
28 public void processOperations(CardOperation[] operations)
29 throws RemoteException {
30 for (int i=0;i<operations.length;i++){
31 Card c = (Card)hash.get(operations[i].card);
32 if (c==null) throw new NotExistsCardOperation();
33 c.balance+=operations[i].amount;
34 hash.put(operations[i].card,c);
35 }
36 }
37
38 // реализация метода getCard интерфейса BillingService
39 public Card getCard(String card) throws RemoteException{
40 Card c = (Card)hash.get(card);
41 return c;
42 };
43
44 // запуск удаленного объекта BillingService
45 public static void main (String[] args) throws Exception {
46 System.out.println("Initializing BillingService...");
47
48 // создание удаленного объекта
49 BillingService service = new BillingServiceImpl();
50
51 //задание имени удаленного объекта
52 String serviceName = "rmi://localhost/BillingService";
53 // регистрация удаленного объекта BillingService в реестре rmiregistry
54 Naming.rebind(serviceName, service);
55 }
56
57 }
вопрос
Правильный ответ:
31
33
в коде класса
BillingServiceImpl
нет операторов, осуществляющих чтение передаваемых клиентом аргументов из сети Сложность вопроса
20
Сложность курса: Построение распределенных систем на Java
91
Оценить вопрос
Комментарии:
Аноним
Гранд мерси за решебник по intiut'у.
24 фев 2018
Другие ответы на вопросы из темы интернет-технологии интуит.
- # Какие из перечисленных примеров являются примерами распределенных систем:
- # Класс ServerSocket из пакета java.net:
- # Чтение из потока, в строке 21, в случае, если клиент после установки соединения не записал в поток никаких данных, приведет: 1 package com.asw.net.ex1; 2 import java.io.*; 3 4 public class BillingClientService extends Thread { 5 DataInputStream dis; 6 DataOutputStream dos; 7 BillingService bs; 8 9 public BillingClientService (BillingService bs,DataInputStream dis,DataOutputStream dos){ 10 this.bs = bs; 11 this.dis = dis; 12 this.dos = dos; 13 } 14 15 public void run(){ 16 System.out.println("ClientService thread started"); 17 boolean work = true; 18 while (work) { 19 int command; 20 try { 21 command = dis.readInt(); 22 switch (command) { 23 case BillingService.ADD_NEW_CARD: 24 addNewCard(); 25 break; 26 case BillingService.ADD_MONEY: 27 addMoney(); 28 break; 29 case BillingService.SUB_MONEY: 30 subMoney(); 31 break; 32 case BillingService.GET_CARD_BALANCE: 33 getCardBalance(); 34 break; 35 case BillingService.EXIT_CLIENT: 36 work = false; 37 break; 38 default: 39 System.out.println("Bad operation:" + command); 40 } 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 } 46 47 void addNewCard() throws IOException{ 48 String personName = dis.readUTF(); 49 String card = dis.readUTF(); 50 bs.addNewCard(personName,card); 51 } 52 void addMoney() throws IOException{ 53 String card = dis.readUTF(); 54 double money = dis.readDouble(); 55 bs.addMoney(card,money); 56 } 57 void subMoney() throws IOException{ 58 String card = dis.readUTF(); 59 double money = dis.readDouble(); 60 bs.subMoney(card,money); 61 } 62 void getCardBalance() throws IOException{ 63 String card = dis.readUTF(); 64 double money = bs.getCardBalance(card); 65 dos.writeDouble(money); 66 } 67 }
- # Класс, методы экземпляра которого могут вызываться удаленно через Java RMI должен:
- # При использовании Dynamic Invocation Interface (DII) на стороне клиента, использование IDL для автоматического построения классов на стороне сервера: