Прохожу курс "Построение распределенных систем на Java" в третьей лекции где описывается TCPServer вылетает эта ошибка
"Connection cannot be resolved to a type" Java version 1.7.0_05 |
Web-сервисы. Примеры
Второй пример
Одна из основных идей, лежащих в основе технологии Web -серви-сов, состоит в независимости разрабатываемых на ее основе приложений от используемой платформы. Поэтому, в качестве дополнения к предыдущему примеру, мы реализуем второго клиента для того же самого Web -сервиса, но на основе совершенно другой технологии. В качестве клиента мы будем использовать стандартное Web -приложение, состоящее из набора HTML -страниц с небольшими вкраплениями jsp -кода. Допустим, для автоматизируемой нами сети ресторанов нужно создать Web -сайт, на котором клиенты могли бы просмотреть текущий баланс своих карт, а сотрудники могли бы выполнить некоторые действия с системой - например, создать новую карту. Соответствующий код, реализующий такую функциональность, представлен ниже.
Поскольку мы не ставим своей целью рассмотреть в подробностях процесс Web -программирования, остановимся только на основных деталях. По сути, наше приложение состоит из нескольких jsp -страниц. Поскольку мы разделили страницы, содержащие операции запроса баланса и создания новой карты, их получилось четыре. Для того чтобы jsp -код смог работать с Web -сервисом, необходимо, как и в случае с предыдущим клиентом, сгенерировать вспомогательные классы с помощью утилиты wsimport и разместить их в соответствующей папке ( classes ) Web -приложения.
Итак, реализуем две jsp -страницы, которые содержат формы для ввода параметров: одна для метода просмотра баланса (вводится один параметр - номер просматриваемой карты), вторая для операции заведения новой карты (вводится два параметра - номер карты и персона). Еще две jsp -страницы загружаются первыми при нажатии соответствующих кнопок в форме и содержат код, вызывающий методы Web -сервиса.
Страница ShowBalance.jsp
Содержит форму параметров для вызова метода getCard Web -сервиса (пример 12.5). Вызывает showbalanceresponse.jsp.
<html> <head><title>BillingService</title></head> <h2>Enter card number</h2> <form method="get"> <input type="text" name="cardnumber" size="25"> <p></p> <input type="submit" value="Submit"> <input type="reset" value="Reset"> </form> <% String cardnumber = request.getParameter("cardnumber"); if ( cardnumber != null && cardnumber.length() > 0 ) { %> <%@include file="showbalanceresponse.jsp" %> <% } %> </body> </html>Листинг 12.5. Страница ShowBalance.jsp
Страница showbalanceresponse.jsp
Содержит код для обращения к Web -сервису (пример 12.5), для чего подключает классы com.asw.ws.ex1.endpoint.BillingService, com.asw.ws.ex1. endpoint.Billing, com.asw.ws.ex1.endpoint.Card,которые были автоматически сгенерированы утилитой wsimport на основании анализа WSDL файла Web -сервиса. Эти классы должны располагаться в папке classes Web -приложения. Вызывает метод Web -сервиса getCard, передавая ему в качестве аргумента значение, введенное в форме. Поля возвращенного объекта выводятся на странице.
<%@ page import="com.asw.ws.ex1.endpoint.BillingService, com.asw.ws.ex1.endpoint.Billing, com.asw.ws.ex1.endpoint.Card" %> <% Card resp = null; try { Billing billing = new BillingService().getBillingPort(); resp = billing.getCard(request.getParameter("cardnumber")); } catch (Exception ex) { resp = new Card(); } %> <h2> <font color="black"> <%=resp.getPerson()+"\t"+resp.getBalance()%> </font></h2>Листинг 12.6. Страница showbalanceresponse.jsp
Страница AddCard.jsp
Содержит форму параметров для вызова метода addNewCard Web -сервиса (пример 12.7) (в данном случае страница предназначена для создания одной карты за один раз, в качестве параметров вводятся номер карты и персона). Вызывает addcardresponse.jsp.
<html> <head><title>BillingService</title></head> <h2>Enter card number</h2> <form method="get"> <input type="text" name="cardnumber" size="25"> <input type="text" name="person" size="25"> <p></p> <input type="submit" value="Submit"> <input type="reset" value="Reset"> </form> <% String cardnumber = request.getParameter("cardnumber"); String person = request.getParameter("person"); if ( cardnumber != null && cardnumber.length() > 0 && person != null && person.length() > 0) { %> <%@include file="addcardresponse.jsp" %> <% } %> </body> </html>Листинг 12.7. Страница AddCard.jsp
Страница addcardresponse.jsp
Содержит код для обращения к Web -сервису (пример 12.8), для чего подключает классы com.asw.ws.ex1.endpoint.BillingService, com.asw.ws.ex1. endpoint.Billing, com.asw.ws.ex1.endpoint.Card,которые были автоматически сгенерированы утилитой wsimport на основании анализа WSDL файла Web -сервиса. Эти классы должны располагаться в папке classes Web -приложения. Вызывает метод Web -сервиса addNewCard,для чего создает объект класса Card и устанавливает его поля значениями, введенными в форме. Созданный объект добавляется в вектор, который передается в качестве аргумента методу addNewCard.
<%@ page import="com.asw.ws.ex1.endpoint.BillingService, com.asw.ws.ex1.endpoint.Billing, com.asw.ws.ex1.endpoint.Card" %> <% Card card = new Card(); try { Billing billing = new BillingService().getBillingPort(); String _cardnumber = request.getParameter("cardnumber"); String _person = request.getParameter("person"); card.setPerson(_person); card.setCardNumber(_cardnumber); java.util.Vector<Card> v = new java.util.Vector<Card>(); v.add(card); billing.addNewCard(v); } catch (Exception ex) { } %> <h2> <font color="black"> <%=card.getPerson()+"\t"+card.getBalance()%> </font> </h2>Листинг 12.8. Страница addcardresponse.jsp