Прохожу курс "Построение распределенных систем на Java" в третьей лекции где описывается TCPServer вылетает эта ошибка
"Connection cannot be resolved to a type" Java version 1.7.0_05 |
Использование JMS
Серверный листенер ObjectListener
ObjectListener (пример 13.9) обрабатывает поступающие сообщения. При приходе нового сообщения он проверяет его тип (сообщение должно быть типа ObjectMessage,приход текстового сообщения интерпретируется как команда выдать балансы всех карт), извлекает объект, переданный в теле сообщения, проверяет его тип (ожидается, что пришедшие объекты могут быть двух типов - Card и CardOperation),после чего вызывает соответствующий метод BillingService,выполняющий нужную операцию.
1 package com.asw.jms.ex1; 2 3 import javax.jms.*; 4 5 6 public class ObjectListener implements MessageListener { 7 BillingService bs; 8 public ObjectListener (BillingService bs){ 9 this.bs = bs; 10 } 11 public void onMessage(Message message) { 12 ObjectMessage msg = null; 13 14 try { 15 if (message instanceof ObjectMessage) { 16 msg = (ObjectMessage) message; 17 Object o = msg.getObject(); 18 System.out.println("Reading message: " + o); 19 if (o instanceof Card) bs.addNewCard((Card)o); 20 else if (o instanceof CardOperation) bs.performCardOperation((CardOperation)o); 21 } else { 22 System.err.println("Message is not a ObjectMessage"); 23 bs.printCards(); 24 } 25 } catch (JMSException e) { 26 System.err.println("JMSException in onMessage(): " + e.toString()); 27 } catch (Throwable t) { 28 System.err.println("Exception in onMessage():" + t.getMessage()); 29 } 30 } 31 }Листинг 13.9. Класс ObjectListener
Компиляция и запуск
Компиляция и выполнение не отличаются от рассмотренного ранее примера. Ниже приведен пример работы системы. Запуск клиента:
appclient -client BillingClient.jar
Результат выполнения клиентской программы приведен ниже:
Sending message: com.asw.jms.ex1.CardOperation@1e0bf98 .... Sending message: com.asw.jms.ex1.CardOperation@11fb8c6 Sending message: com.asw.jms.ex1.CardOperation@35378d Sending message: com.asw.jms.ex1.CardOperation@190c5c0 Sending message: com.asw.jms.ex1.CardOperation@1681629 Sending message: com.asw.jms.ex1.CardOperation@1c39aa6 Sending message: com.asw.jms.ex1.CardOperation@44c4a4 Sending message: com.asw.jms.ex1.CardOperation@469729
Запуск сервера:
appclient -client BillingService.jar
Результат выполнения серверной программы приведен ниже:
To end program, type Q or q, then <return> Reading message: Card: cardNumber=1 Balance=0.0 Person=Piter CreateDate=Sun Dec 24 13:13:15 MSK 2006 Reading message: Card: cardNumber=2 Balance=0.0 Person=Stefan CreateDate=Sun Dec 24 13:13:15 MSK 2006 Reading message: Card: cardNumber=3 Balance=0.0 Person=Nataly CreateDate=Sun Dec 24 13:13:15 MSK 2006 Reading message: com.asw.jms.ex1.CardOperation@1dbe72f Reading message: com.asw.jms.ex1.CardOperation@26efd3 Reading message: com.asw.jms.ex1.CardOperation@1c20611 Reading message: com.asw.jms.ex1.CardOperation@11c5c88 ... Reading message: com.asw.jms.ex1.CardOperation@11ce4fe Reading message: com.asw.jms.ex1.CardOperation@1fe0d66 Card: cardNumber=3Balance=169830.0 Person=Nataly CreateDate=Sun Dec 24 13:13:15 MSK 2006 Card: cardNumber=2Balance=169497.0 Person=Stefan CreateDate=Sun Dec 24 13:13:15 MSK 2006 Card: cardNumber=1Balance=170173.0 Person=PiterCreateDate=Sun Dec 24 13:13:15 MSK 2006