База ответов ИНТУИТ

Построение распределенных систем на Java - ответы

Количество вопросов - 192

Протокол TCP:

CORBA может быть использована при разработке:

Класс CardImpl, это:

Чтение из потока, в строке 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  }

Какие утилиты, входящие в состав JDK, используются при компиляции BillingClient и BillingService:

Какие из следующих утверждений являются верными:

Роль "серверной заглушки" автоматически создаваемой утилитой idlj состоит в:

Какие из следующих утверждений являются верными:

Классы Card и CardOperation на стороне клиента:

Какие из перечисленных примеров не являются примерами распределенных систем:

Роль "клиентской заглушки" автоматически создаваемой утилитой idlj состоит в:

API динамических вызовов используется:

Какие из следующих утверждений являются верными:

Утилита idlj:

Класс BillingServiceServer:

Какие из следующих утверждений являются верными:

Какие типы сообщений поддерживаются в JMS:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Как клиент HelloClient получает сетевой адрес и имя Web-сервиса, метод которого необходимо вызвать:

Какое из следующих утверждений является верными:

Класс Socket из пакета java.net:

В какой строчке кода осуществляется чтение сообщения клиента:

1  package com.asw.jms.ex1;2  3  import javax.jms.*;4  import javax.annotation.Resource;5  import java.io.InputStreamReader;6  import java.io.IOException;7  import java.util.Hashtable;8  import java.util.Enumeration;9  10  public class BillingService {11      @Resource(mappedName = "jms/ConnectionFactory")12      private static ConnectionFactory connectionFactory;13      @Resource(mappedName = "jms/Queue")14      private static Queue queue;15  16      Hashtable hash = new Hashtable();17      public void addNewCard(Card c) {18    hash.put(c.cardNumber, c);    19      };20  21      public void performCardOperation(CardOperation co){22    Card c = (Card)hash.get(co.card);23    if (c==null) return;24    c.balance+=co.amount;25    hash.put(co.card,c);26      };27  28      public void printCards(){29        for(Enumeration e = hash.elements();e.hasMoreElements();)30      System.out.println(e.nextElement());31      }32  33      public static void main(String[] args) {34          String destType = null;35          Connection connection = null;36          Session session = null;37          Destination dest = (Destination) queue;38          MessageConsumer consumer = null;39          ObjectListener listener = null;40          TextMessage message = null;41          InputStreamReader inputStreamReader = null;42          char answer = '\0';43          try {44              connection = connectionFactory.createConnection();45         session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);46              consumer = session.createConsumer(dest);47              listener = new ObjectListener(new BillingService());48              consumer.setMessageListener(listener);49              connection.start();50              System.out.println(51                      "To end program, type Q or q, " + "then <return>");52              inputStreamReader = new InputStreamReader(System.in);53              while (!((answer == 'q') || (answer == 'Q'))) {54                  try {55                      answer = (char) inputStreamReader.read();56                  } catch (IOException e) {57                      System.err.println("I/O exception: " + e.toString());58                  }59              }60          } catch (JMSException e) {61              System.err.println("Exception occurred: " + e.toString());62          } finally {63              if (connection != null) {64                  try {65                      connection.close();66                  } catch (JMSException e) {67                  }68              }69          }70      }71  }

Dynamic Invocation Interface (DII) и Dynamic Dynamic Skeleton Interface (DSI) используются:

Класс BillingServiceServer, это:

В какой строке кода BillingServiceImpl осуществляется прием клиентского соединения:
1  // BillingServiceImpl.java2  package com.asw.corba.ex1;3   4  // базовые пакеты Java5  import java.util.Hashtable;6   7  import com.asw.corba.ex1.BillingServiceModule.*;8   9  // пакеты OMG CORBA10  import org.omg.CORBA.*;11   12  public class BillingServiceImpl  extends BillingServicePOA {13  private ORB orb;14  private  Hashtable hash = new Hashtable();15   16  public void setORB(ORB orb_val) {17  orb = orb_val;18  }19   20  public void addNewCard(String personName, String card) {21  hash.put(card, new Double(0.0));22  }23   24  public void addMoney(String card, double money) {25  Double d = (Double)hash.get(card);26   27  if (d!=null) hash.put(card,new Double(d.doubleValue()+money));28  }29   30  public void subMoney(String card, double money) {31  Double d = (Double)hash.get(card);32   33  if (d!=null) hash.put(card,new Double(d.doubleValue()-money));34  }35   36  public double getCardBalance(String card) {37  Double d = (Double)hash.get(card);38   39  if (d!=null) return d.doubleValue();40  else return 0;41  }42  }

Создание класс BillingServiceServer с параметром при регистрации LifespanPolicyValue.PERSISTENT обеспечивает:

Класс BillingServiceImpl:

Модель "клиент-сервер"

Какие из следующих утверждений являются верными:

Мобильные агенты:

Какие из следующих утверждений являются верными:

Разрабатываемая вами информационная система распределенная, если:

Какие из перечисленных примеров являются примерами распределенных систем:

Какие из следующих утверждений являются верными:

Использование UDP может быть оправданно в том случае, если:

Класс DatagramSocket из пакета java.net:

Класс DatagramPacket из пакета java.net:

Класс ServerSocket из пакета java.net:

Класс Socket из пакета java.net:

Класс BillingServiceпроизводит непосредственное чтение данных, передаваемых клиентом в методе:
1  package com.asw.net.ex1;2  import java.net.*;3  import java.util.Hashtable;4  import java.io.*;5  6  public class BillingService extends Thread{7  public static final int ADD_NEW_CARD = 1;8  public static final int ADD_MONEY = 2;9  public static final int SUB_MONEY = 3;10  public static final int GET_CARD_BALANCE = 4;11  public static final int EXIT_CLIENT = 5;12  13  private int serverPort = 7896;14  private ServerSocket ss;15  private  Hashtable hash;16  17  public static void main(String[] args) {18    BillingService bs = new BillingService();19    bs.start();20  }21  22  public BillingService(){23    hash = new Hashtable();24  }25  26  public void run(){27    try {28      ss = new ServerSocket(serverPort);29      System.out.println("Server started");30      while(true){31        Socket s = ss.accept();32        System.out.println("Client accepted");33        BillingClientService bcs = new BillingClientService(this, new DataInputStream(s.getInputStream()),                   new DataOutputStream(s.getOutputStream()));34        bcs.start();35      }36    } catch (IOException e) {37      e.printStackTrace();38    }39  }40  41  public void addNewCard(String personName, String card) {42    hash.put(card, new Double(0.0));43  }44  public void addMoney(String card, double money) {45    Double d = (Double)hash.get(card);46    if (d!=null) hash.put(card,new Double(d.doubleValue()+money));47  }48  public void subMoney(String card, double money) {49    Double d = (Double)hash.get(card);50    if (d!=null) hash.put(card,new Double(d.doubleValue()-money));51  }52  public double getCardBalance(String card) {53    Double d = (Double)hash.get(card);54    if (d!=null) return d.doubleValue();55    return 0;56  }57  }

В какой строке происходит прием соединения клиента (класс BillingService):
1  package com.asw.net.ex1;2  import java.net.*;3  import java.util.Hashtable;4  import java.io.*;5  6  public class BillingService extends Thread{7  public static final int ADD_NEW_CARD = 1;8  public static final int ADD_MONEY = 2;9  public static final int SUB_MONEY = 3;10  public static final int GET_CARD_BALANCE = 4;11  public static final int EXIT_CLIENT = 5;12  13  private int serverPort = 7896;14  private ServerSocket ss;15  private  Hashtable hash;16  17  public static void main(String[] args) {18    BillingService bs = new BillingService();19    bs.start();20  }21  22  public BillingService(){23    hash = new Hashtable();24  }25  26  public void run(){27    try {28      ss = new ServerSocket(serverPort);29      System.out.println("Server started");30      while(true){31        Socket s = ss.accept();32        System.out.println("Client accepted");33        BillingClientService bcs = new BillingClientService(this, new DataInputStream(s.getInputStream()),                new DataOutputStream(s.getOutputStream()));34        bcs.start();35      }36    } catch (IOException e) {37      e.printStackTrace();38    }39  }40  41  public void addNewCard(String personName, String card) {42    hash.put(card, new Double(0.0));43  }44  public void addMoney(String card, double money) {45    Double d = (Double)hash.get(card);46    if (d!=null) hash.put(card,new Double(d.doubleValue()+money));47  }48  public void subMoney(String card, double money) {49    Double d = (Double)hash.get(card);50    if (d!=null) hash.put(card,new Double(d.doubleValue()-money));51  }52  public double getCardBalance(String card) {53    Double d = (Double)hash.get(card);54    if (d!=null) return d.doubleValue();55    return 0;56  }57  }

В случае если клиент завершит соединение, не послав предварительно сигнал EXIT_CLIENT:
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  }

Класс, объявленный как реализующий интерфейс Serializable, обязательно должен удовлетворять следующим условиям:

При передаче экземпляров CardOperation по сети, передаются:

Какие из следующих утверждений являются верными:

Java RMI может быть использована только в том случае, если:

Какие из следующих утверждений являются верными:

Для того чтобы методы, определенные в удаленном интерфейсе могли принимать параметры типа "класс, определенный пользователем", необходимо:

Возвращаемым значением для метода, вызываемого удаленно, могут быть:

В строке 54, в классе BillingServiceImpl:
1  // BillingServiceImpl.java2  // BillingServiceImpl реализует удаленный интерфейс BillingService для 3  // предоставления удаленного объекта BillingService4  package com.asw.rmi.ex2;5   6  // Набор базовых пакетов Java7  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 интерфейса BillingService22  public void addNewCard(Card card) throws RemoteException {23   24  hash.put(card.cardNumber, card);25  }26   27  // реализация метода processOperations интерфейса BillingService28  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 интерфейса BillingService39  public Card getCard(String card) throws RemoteException{40  Card c = (Card)hash.get(card);41  return c;42  };43   44  // запуск удаленного объекта BillingService45  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 в реестре rmiregistry54  Naming.rebind(serviceName, service);55  }56   57  }

Какие из следующих утверждений являются верными:

Объектная ссылка в CORBA это:

В классе BillingServiceImpl для удаленного вызова доступны следующие методы:

В строке 41, в классе BillingServiceServer:
1  // BillingServiceServer.java2  package com.asw.corba.ex1;3   4  // пакеты OMG CORBA5  import org.omg.CosNaming.*;6  import org.omg.CORBA.*;7  import org.omg.PortableServer.*;8  import org.omg.PortableServer.POA;9  import com.asw.corba.ex1.BillingServiceModule.*;10   11  public class BillingServiceServer {12  public static void main(String args[]) {13  try{14  // create and initialize the ORB15  ORB orb = ORB.init(args, null);16   17  // get reference to rootpoa & activate the POAManager18  POA rootpoa =19  POAHelper.narrow(orb.resolve_initial_references("RootPOA"));20  rootpoa.the_POAManager().activate();21   22  // create servant and register it with the ORB23  BillingServiceImpl BSImpl = new BillingServiceImpl();24  BSImpl.setORB(orb);25   26  // get object reference from the servant27  org.omg.CORBA.Object ref = rootpoa.servant_to_reference(BSImpl);28  BillingService href = BillingServiceHelper.narrow(ref);29   30  // get the root naming context31  // NameService invokes the name service32  org.omg.CORBA.Object objRef =33  orb.resolve_initial_references("NameService");34  // Use NamingContextExt which is part of the Interoperable35  // Naming Service (INS) specification.36  NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);37   38  // bind the Object Reference in Naming39  String name = "BillingService";40  NameComponent path[] = ncRef.to_name( name );41  ncRef.rebind(path, href);42   43  System.out.println("BillingServiceServer ready and waiting ...");44   45  // wait for invocations from clients46  orb.run();47  }48   49  catch (Exception e) {50  System.err.println("ERROR: " + e);51  e.printStackTrace(System.out);52  }53  System.out.println("BillingServer Exiting ...");54  }55  }

В строке 32 , в классе BillingServiceServer:
1  // BillingServiceServer.java2  package com.asw.corba.ex1;3   4  // пакеты OMG CORBA5  import org.omg.CosNaming.*;6  import org.omg.CORBA.*;7  import org.omg.PortableServer.*;8  import org.omg.PortableServer.POA;9  import com.asw.corba.ex1.BillingServiceModule.*;10   11  public class BillingServiceServer {12  public static void main(String args[]) {13  try{14  // create and initialize the ORB15  ORB orb = ORB.init(args, null);16   17  // get reference to rootpoa & activate the POAManager18  POA rootpoa =19  POAHelper.narrow(orb.resolve_initial_references("RootPOA"));20  rootpoa.the_POAManager().activate();21   22  // create servant and register it with the ORB23  BillingServiceImpl BSImpl = new BillingServiceImpl();24  BSImpl.setORB(orb);25   26  // get object reference from the servant27  org.omg.CORBA.Object ref = rootpoa.servant_to_reference(BSImpl);28  BillingService href = BillingServiceHelper.narrow(ref);29   30  // get the root naming context31  // NameService invokes the name service32  org.omg.CORBA.Object objRef =33  orb.resolve_initial_references("NameService");34  // Use NamingContextExt which is part of the Interoperable35  // Naming Service (INS) specification.36  NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);37   38  // bind the Object Reference in Naming39  String name = "BillingService";40  NameComponent path[] = ncRef.to_name( name );41  ncRef.rebind(path, href);42   43  System.out.println("BillingServiceServer ready and waiting ...");44   45  // wait for invocations from clients46  orb.run();47  }48   49  catch (Exception e) {50  System.err.println("ERROR: " + e);51  e.printStackTrace(System.out);52  }53  System.out.println("BillingServer Exiting ...");54  }55  }

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Динамические скелетоны используются:

Описание Card addNewCard(in string personName, in string card) в определении BillingService.idl означает, что объектная ссылка Card, возвращаемая методом, "указывает" на:

В хэштаблице _cards (класс BillingServiceImpl) хранятся:

Какие из следующих утверждений являются верными:

Запуск приложения осуществляется в следующем порядке:

При использовании Dynamic Dynamic Skeleton Interface (DSI) на стороне сервера, использование IDL для автоматического построения классов на стороне клиента:

Класс, использующий Dynamic Invocation Interface (DII) должен наследовать от:

Какие из следующих утверждений являются верными:

При регистрации в сервисе имен класса, использующего DII:

При регистрации в сервисе имен класса, использующего DII:

При использовании DII, в случае, если сигнатура удаленного метода изменена, необходимо:

WSDL это:

Какие аннотации из пакета javax.jws минимально необходимы при "автоматическом" создании Web-сервиса, содержащего хотя бы один метод:

Утилита wsgen требует для своей работы:

В WSDL-файле содержится:

При использовании Sun Java System Application Server и набора скриптов из пакета The Java Web Services Tutorial инсталляция Web-сервиса осуществляется командой:

При использовании возможности тестирования Web-сервиса, предоставляемой Sun Java System Application Server пользователь имеет возможность:

helloservice.endpoint.HelloService представляет собой:

Утилита wsimport для своей работы требует:

Транспортный класс Card в обязательном порядке должен:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Аннотация @Resource(mappedName="jms/Queue"):

Какие из следующих утверждений являются верными:

В какой строке класса ObjectListener осуществляется чтение сообщения из очереди:

С помощью каких утилит, входящих в состав Sun Application Server, осуществляется запуск BillingClient и BillingService:

Какие из следующих утверждений являются верными:

Класс DatagramPacket из пакета java.net:

Результатом работы утилиты wsimport является:

В какой строке кода BillingServiceImpl происходит чтение из сети аргументов, передаваемых в метод addNewCard:
1  // BillingServiceImpl.java2  package com.asw.corba.ex1;3   4  // базовые пакеты Java5  import java.util.Hashtable;6   7  import com.asw.corba.ex1.BillingServiceModule.*;8   9  // пакеты OMG CORBA10  import org.omg.CORBA.*;11   12  public class BillingServiceImpl  extends BillingServicePOA {13  private ORB orb;14  private  Hashtable hash = new Hashtable();15   16  public void setORB(ORB orb_val) {17  orb = orb_val;18  }19   20  public void addNewCard(String personName, String card) {21  hash.put(card, new Double(0.0));22  }23   24  public void addMoney(String card, double money) {25  Double d = (Double)hash.get(card);26   27  if (d!=null) hash.put(card,new Double(d.doubleValue()+money));28  }29   30  public void subMoney(String card, double money) {31  Double d = (Double)hash.get(card);32   33  if (d!=null) hash.put(card,new Double(d.doubleValue()-money));34  }35   36  public double getCardBalance(String card) {37  Double d = (Double)hash.get(card);38   39  if (d!=null) return d.doubleValue();40  else return 0;41  }42  }

При объявлении методов в IDL, типы передаваемых в них аргументов должны:

Какие из следующих утверждений являются верными:

Как BillingServiceClient находит сервис имен:

В какой строке кода BillingServiceImpl происходит чтение из сети аргументов, передаваемых в метод processOperations:
1  // BillingServiceImpl.java2  // BillingServiceImpl реализует удаленный интерфейс BillingService для 3  // предоставления удаленного объекта BillingService4  package com.asw.rmi.ex2;5   6  // Набор базовых пакетов Java7  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 интерфейса BillingService22  public void addNewCard(Card card) throws RemoteException {23   24  hash.put(card.cardNumber, card);25  }26   27  // реализация метода processOperations интерфейса BillingService28  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 интерфейса BillingService39  public Card getCard(String card) throws RemoteException{40  Card c = (Card)hash.get(card);41  return c;42  };43   44  // запуск удаленного объекта BillingService45  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 в реестре rmiregistry54  Naming.rebind(serviceName, service);55  }56   57  }

Класс, который должен быть опубликован в качестве Web-сервиса должен быть помечен аннотацией:

Module BillingServiceModule (в определении BillingService.idl) при использовании утилиты idlj породит следующую синтаксическую конструкцию Java:

В каком методе класса BillingService происходит создание соединений с клиентами:
1  package com.asw.net.ex1;2  import java.net.*;3  import java.util.Hashtable;4  import java.io.*;5  6  public class BillingService extends Thread{7  public static final int ADD_NEW_CARD = 1;8  public static final int ADD_MONEY = 2;9  public static final int SUB_MONEY = 3;10  public static final int GET_CARD_BALANCE = 4;11  public static final int EXIT_CLIENT = 5;12  13  private int serverPort = 7896;14  private ServerSocket ss;15  private  Hashtable hash;16  17  public static void main(String[] args) {18    BillingService bs = new BillingService();19    bs.start();20  }21  22  public BillingService(){23    hash = new Hashtable();24  }25  26  public void run(){27    try {28      ss = new ServerSocket(serverPort);29      System.out.println("Server started");30      while(true){31        Socket s = ss.accept();32        System.out.println("Client accepted");33        BillingClientService bcs = new BillingClientService(this, new DataInputStream(s.getInputStream()),               new DataOutputStream(s.getOutputStream()));34        bcs.start();35      }36    } catch (IOException e) {37      e.printStackTrace();38    }39  }40  41  public void addNewCard(String personName, String card) {42    hash.put(card, new Double(0.0));43  }44  public void addMoney(String card, double money) {45    Double d = (Double)hash.get(card);46    if (d!=null) hash.put(card,new Double(d.doubleValue()+money));47  }48  public void subMoney(String card, double money) {49    Double d = (Double)hash.get(card);50    if (d!=null) hash.put(card,new Double(d.doubleValue()-money));51  }52  public double getCardBalance(String card) {53    Double d = (Double)hash.get(card);54    if (d!=null) return d.doubleValue();55    return 0;56  }57  }

При вызове метода toString() для экземпляра класса Card на стороне клиента (листинг программы):

Какие из следующих утверждений являются верными:

Класс, методы экземпляра которого могут вызываться удаленно через Java RMI должен:

Метод readObject, в строке 32 , в случае, если клиент после установки соединения не записал в поток никаких данных, приведет:
1  package com.asw.net.ex2;2  import java.io.*;3  import java.net.*;4  5  public class BillingClientService extends Thread {6  ObjectInputStream ois;7  ObjectOutputStream oos;8  BillingService bs;9  Socket s;10  11  public BillingClientService(BillingService bs,Socket s){12    System.out.println("Constructor BillingClientService\n");13    this.bs = bs;14    this.s = s;15    try {16      this.oos = new ObjectOutputStream(s.getOutputStream());17      this.ois = new ObjectInputStream(s.getInputStream());18    } catch (IOException e) {19      // TODO Auto-generated catch block20      e.printStackTrace();21    }22    23    System.out.println("Stream`s done \n socket="+s);24  }25  public void run(){26    System.out.println("ClientService thread started\n");27    boolean work = true;28    while (work) {29      int command;30      Object o;31      try {32        o = ois.readObject();              33        if (o instanceof Card[]) {34          Card[] cards = (Card[])o;35          for (int i=0;i<cards.length;i++){36            bs.addNewCard(cards[i]);37          }38        }else if (o instanceof CardOperation[]){39          CardOperation[] co = (CardOperation[])o;40          for (int i=0;i<co.length;i++){41            bs.addMoney(co[i].card,co[i].amount);42          }43        }else if (o instanceof String){44          oos.writeObject(bs.getCard((String)o)); 45        }else System.out.println("Bad operation");46        47      } catch (IOException e) {48        e.printStackTrace();49      } catch (ClassNotFoundException e) {50        e.printStackTrace();51      }52    }53  }54  }

При вызове метода addNewCard, экземпляр Card передается на сервер как:

Какие из следующих утверждений являются верными:

WSDL-файл представляет собой:

При использовании Sun Java System Application Server и набора скриптов из пакета The Java Web Services Tutorial подготовка модуля развертывания Web-сервиса:

Какие из следующих утверждений являются верными:

Класс, использующий Dynamic Dynamic Skeleton Interface (DSI) должен наследовать от:

При регистрации в сервисе имен класса, использующего DSI:

Описание Card getCard(in string card) в определении BillingService.idl означает, что метод getCard возвращает:

Класс BillingServiceImpl:

Класс ServerSocket из пакета java.net:

При использовании возможности тестирования Web-сервиса, предоставляемой Sun Java System Application Server, после вызова метода отображается:

Почему в коде BillingServiceImpl отсутствуют операторы чтения данных из сети?
1  // BillingServiceImpl.java2  package com.asw.corba.ex1;3   4  // базовые пакеты Java5  import java.util.Hashtable;6   7  import com.asw.corba.ex1.BillingServiceModule.*;8   9  // пакеты OMG CORBA10  import org.omg.CORBA.*;11   12  public class BillingServiceImpl  extends BillingServicePOA {13  private ORB orb;14  private  Hashtable hash = new Hashtable();15   16  public void setORB(ORB orb_val) {17  orb = orb_val;18  }19   20  public void addNewCard(String personName, String card) {21  hash.put(card, new Double(0.0));22  }23   24  public void addMoney(String card, double money) {25  Double d = (Double)hash.get(card);26   27  if (d!=null) hash.put(card,new Double(d.doubleValue()+money));28  }29   30  public void subMoney(String card, double money) {31  Double d = (Double)hash.get(card);32   33  if (d!=null) hash.put(card,new Double(d.doubleValue()-money));34  }35   36  public double getCardBalance(String card) {37  Double d = (Double)hash.get(card);38   39  if (d!=null) return d.doubleValue();40  else return 0;41  }42  }

Использование P2P может быть оправданно в том случае, если:

Для определения интерфейса удаленного объекта, в IDL используется ключевое слово:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Модель сервиса

Какие из следующих утверждений являются верными:

Модель, при которой сервер инициирует соединение:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Открытость, применительно к распределенным системам означает:

Следующие технологии могут использоваться для создания распределенных приложений:

Класс DatagramSocket из пакета java.net:

Какие из следующих утверждений являются верными:

Класс Socket из пакета java.net:

Класс BillingService унаследован от класса Thread, потому что:

После выполнения какой строки сервер (класс BillingService) может принимать соединения клиентов:
1  package com.asw.net.ex1;2  import java.net.*;3  import java.util.Hashtable;4  import java.io.*;5  6  public class BillingService extends Thread{7  public static final int ADD_NEW_CARD = 1;8  public static final int ADD_MONEY = 2;9  public static final int SUB_MONEY = 3;10  public static final int GET_CARD_BALANCE = 4;11  public static final int EXIT_CLIENT = 5;12  13  private int serverPort = 7896;14  private ServerSocket ss;15  private  Hashtable hash;16  17  public static void main(String[] args) {18    BillingService bs = new BillingService();19    bs.start();20  }21  22  public BillingService(){23    hash = new Hashtable();24  }25  26  public void run(){27    try {28      ss = new ServerSocket(serverPort);29      System.out.println("Server started");30      while(true){31        Socket s = ss.accept();32        System.out.println("Client accepted");33        BillingClientService bcs = new BillingClientService(this, new DataInputStream(s.getInputStream()), new DataOutputStream(s.getOutputStream()));34        bcs.start();35      }36    } catch (IOException e) {37      e.printStackTrace();38    }39  }40  41  public void addNewCard(String personName, String card) {42    hash.put(card, new Double(0.0));43  }44  public void addMoney(String card, double money) {45    Double d = (Double)hash.get(card);46    if (d!=null) hash.put(card,new Double(d.doubleValue()+money));47  }48  public void subMoney(String card, double money) {49    Double d = (Double)hash.get(card);50    if (d!=null) hash.put(card,new Double(d.doubleValue()-money));51  }52  public double getCardBalance(String card) {53    Double d = (Double)hash.get(card);54    if (d!=null) return d.doubleValue();55    return 0;56  }57  }

Для того чтобы указать системе на то, что экземпляры класса могут быть сохранены в поток/прочитаны из потока, необходимо:

При передаче объектов, с использованием ObjectOutputStream/ObjectInputStream:

Какие из следующих утверждений являются верными:

Почему в коде BillingServiceImpl отсутствуют операторы чтения данных из сети?

Файл, с IDL-описанием может содержать:

Для запуска системы из клиента и сервера (BillingServiceServer и BillingClient), необходим запуск:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

В какой строке класса BillingServiceServer (листинг программы) объект, реализующий интерфейс BillingService, регистрируется в сервисе имен:

При использовании Dynamic Invocation Interface (DII) и Dynamic Dynamic Skeleton Interface (DSI) на классы накладываются следующие ограничения по наследованию:

Класс, использующий Dynamic Dynamic Skeleton Interface (DSI), в методе invoke:

При регистрации в сервисе имен класса, использующего DSI:

Какие из следующих утверждений являются верными:

WSDL-описание сервиса при использовании сервера приложений Sun Java System Application Server:

Аннотация @WebServiceRef в классе HelloClient относится к:

helloservice.endpoint.Hello представляет собой:

Соединение с JMS-провайдером в классе JMSClient осуществляется в строке (листинг программы):

В каком порядке должен осуществляться запуск примера с BillingClient и BillingService:

Тонкие клиенты:

В какой строке класса BillingServiceServer (листинг программы) создается объект, реализующий интерфейс BillingService, определенный в BillingService.idl:

Метод, предназначенный для публикации и удаленного вызова, помечается аннотацией:

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

При использовании Dynamic Invocation Interface (DII) на стороне клиента, использование IDL для автоматического построения классов на стороне сервера:

SOAP это:

CORBA это:

Какие из следующих утверждений являются верными:

Класс BillingClientService унаследован от класса Thread, потому что:

Протокол обмена данными между клиентом и сервером, предложенный в первой части лекции обладает следующими недостатками:

Для запуска примера потребуются следующие утилиты (при использовании реализации CORBA, включенной в пакет JDK):

При запуске приложения, использующего DSI:

В качестве транспортного протокола для передачи сообщений SOAP может использоваться:

При использовании Sun Java System Application Server и набора скриптов из пакета The Java Web Services Tutorial вызов утилиты wsgen должен быть осуществлен:

Аннотация @Resource(mappedName="jms/ConnectionFactory"):

Какие из следующих утверждений являются верными:

Какие из следующих утверждений являются верными:

Класс DatagramPacket из пакета java.net:

Какие из следующих утверждений являются верными:

Сервис именования CORBA это:

IDL это:

Какие из следующих утверждений являются верными:

Информационные системы, выполненные в архитектуре "клиент-сервер"

Использование proxy:

Использование тонких клиентов может быть оправданно в том случае, если:

Класс ServerSocket из пакета java.net:

Определение удаленного интерфейса RMIExample должно выглядеть следующим образом:

В классе BillingServiceImpl для удаленного вызова посредством Java RMI доступны следующие методы:

В строке 18, в классе BillingClient:
1  // BillingClient.java2  // BillingClient использует удаленный объект BillingService для работы 3  // с информацией на пластиковых картах4  package com.asw.rmi.ex2;5   6  // Набор базовых пакетов Java7  import java.rmi.*;8  import java.util.Date;9   10  public class BillingClient {11  // выполнение BillingClient12  public static void main(String[] args) throws Exception{ 13  // создание строки, содержащей URL удаленного объекта14  String objectName = "rmi://"+args[0]+"/BillingService";15  System.out.println("Starting...\n");16  // соединение с реестром RMI и получение удаленной ссылки17  // на удаленный объект18  BillingService bs = (BillingService)Naming.lookup(objectName);19  System.out.println("done");20   21  // проверка на наличие карт с указанными номерами 22  // в случае отсутствия карты с указанными параметрами23  // добавляем новую карту24  Card c;25  c = bs.getCard("1");26  if (c==null) {27  c = new Card("Piter",new Date(),"1",0.0);28  bs.addNewCard(c);29  }30   31  c = bs.getCard("2");32  if (c==null) {33  c = new Card("Stefan",new Date(),"2",0.0);34  bs.addNewCard(c);35  }36   37  c = bs.getCard("3");38  if (c==null) {39  c = new Card("Nataly",new Date(),"3",0.0);40  bs.addNewCard(c);41  }42   43  // определение массива операций по картам44  System.err.println("begin...\n");45  int cnt = 30000;46  CardOperation[] co = new CardOperation[cnt];47  for (int i = 0; i < cnt; i++) {48  switch (i%3){49  case 0:  co[i] = new CardOperation("1",1,new Date());break;50  case 1:  co[i] = new CardOperation("2",1,new Date());break;51  case 2:  co[i] = new CardOperation("3",1,new Date());break;52  }53  }54  // проведение указанных в массиве операций55  bs.processOperations(co);56  57  // печать текущего баланса обработанных карт58  System.out.println(bs.getCard("1"));59  System.out.println(bs.getCard("2"));60  System.out.println(bs.getCard("3"));61  }62  }

Результатом работы утилиты wsgen является:

Поля транспортных классов, которые предполагается передавать между компонентами, в обязательном порядке:

Класс, использующий Dynamic Dynamic Skeleton Interface (DSI), наследуя от класса DynamicImplementation должен реализовать метод(ы):

При запуске приложения, использующего DII:

Использование мобильных агентов оправданно:

Класс DatagramSocket из пакета java.net:

Какие из следующих утверждений являются верными:

Сколько методов, доступных для удаленного вызова, содержит Web-сервис Billing:

Класс BillingService допускает одновременное подключение и передачу данных для какого числа клиентов:

Для запуска системы из клиента и сервера (BillingServiceImpl и BillingClient), необходим запуск:

Компиляция класса HelloClient должна производиться в следующей последовательности:

Класс BillingServiceServer запускается на исполнение:

Утилита rmic:

Какие из следующих утверждений являются верными: