Построение распределенных систем на Java - ответы
Количество вопросов - 192
Чтение из потока, в строке 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 }
В какой строчке кода осуществляется чтение сообщения клиента:
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 }