Здравствуйте, подскажите пожалуйста где можно достать материалы по курсу Кросс-платформенные и многозвенные технологии, о которых говориться, к примеру, в Лекции 2. Пример "Служба мгновенных сообщений" |
Технология Enterprise Java Beans. Часть 1
Создание проектов
Для компонентов EJB следует создать проект EJB,аналогичный проектам из предыдущих примеров. Назовем его ShoppingBasketBean.Для тестовых примеров создаются обычные Java -проекты, к ним еще подключаются библиотеки jbossall-client.jar и jboss-j2ee.jar.
Для веб-приложения, следует выбрать тип проекта Web -> Dynamic Web Project (Рис. 3.46). Далее на следующем окне в качестве Target Runtime выбираем JBoss 4.0,в EAR (Enterprise Application Project) пока не добавляем (можно, конечно, было вначале создать EAR -проект -это ничего не меняет). После этого будет создан проект для динамического веб-приложение - то что нам и нужно.
В проекте будут созданы два основных каталога - src и WebContent. В src следует помещать все Java -классы, используемые в веб-приложении - сервлеты, фильтры и другие классы. Фильтр поместим в пакет webclient.filter, а сервлеты в пакет webclient.servlets (Рис. 3.47). JSP страницы и файл конфигурации веб-приложения web.xml помещаюся в каталог WebContent. Помимо этого в этом каталоге создадим каталог img, в котором поместим фотографии пачек сигарет, доступных к продаже в магазине. Страницы JSP помещаем в каталог WebContent, фотографии сигарет в каталог img, файл web.xml в каталог WEB-INF.
Теперь осталось создать EAR -проект - это такой тип проекта, в который можно подключить несколько различных проектов EJB,а также разнообразные клиентские проекты, после этого при развертке этого проекта, он также корректно развернет все проекты, которые к нему подключены (по крайней мере так предполагается). Создаем проект J2EE -> Enterprise Application Project. Опять в качестве Target Runtime выбираем JBoss 4.0.
На последнем этапе следует подключить в EAR -проекту два наших проекта - EJB и веб-проект (Рис. 3.48).
Теперь, когда все проекты готовы, следую подключить EAR -проект к JBoss ( Servers -> JBoss -> Add and Remove Projects ), причем входящие в него проекты подключать не надо, иначе будет ошибка.
Если все было сделано правильно, то при запуске JBoss оба проекта будут корректно развернуты на сервере JBoss, а веб-приложение будет доступно по адресу http : //localhost :8080/ ShoppingBasketWebClient (последняя часть URL соответствует имени проекта). Скриншоты веб-приложения уже приводились при обсуждении страниц JSP и здесь они приводиться не будут.
Советы по отладке
Последний пример уже был достаточно сложен. Возможность отладки приложения становится все нужнее. К счастью Eclipse-WTP дает возможность как отладки компонентов, развернутых на сервере приложений, так и отладки JSP -страниц и сервлетов. Для этого надо при запуске сервера приложений (в нашем случае JBoss) запустить его не при помощи команды Run, а при помощи команды Debug.
Запуск сервера в режиме Debug показан на Рис. 3.49. После этого можно выполнять отладку как JSP -страниц, так и компонентов.
Breakpoint как для JSP -страниц, так и для Java -классов, устанавливается посредством щелчка правой кнопкой мыши рядом со строчкой кода. В меню можно выбрать операцию с breakpoint - установить, удалить, сделать неактивным. Теперь перед выполнением этой строки кода будет произведена остановка.
Отлаживать лучше в Debug -перспективе - Window -> Open perspective -> Debug. В этой перспективе есть все возможности для отладки - Watch, Breakpoints, вычисление различных выражений и т.д. Для более подробного изучения процесса отладки в Eclipse следует обратиться к документации по нему.
Недостатки данного примера
У примера можно выделить несколько недостатков. Перечислим некоторые из них:
- Отсутствие дизайна веб-приложения - это в курсе по веб-дизайну, либо посетите сайт студии Артемия Лебедева http://www. artlebedev.ru - там все написано;
- Подсчет стоимости заказа вынесен на страницу JSP - это плохо, так как страница JSP отвечает, по-хорошему, только за представление информации, а бизнес-логика, свойственная компонентам EJB,в ней должна отсутствовать;
- При добавлении товара в корзину или запроса содержимого заказа не проверяется факт существования товара или заказа в базе данных;
- При формировании страницы со всеми заказами, на каждый товар идет запрос к базе данных (посредством метода Commodity CommodityListBean.getCommodityByld (int id)) - это крайне неэкономично;
- При формировании корзины с товарами, на каждый товар опять запрос к базе данных (посредством метода Commodity CommodityListBean.getCommodityByld(int id)) - тоже неэкономично;
- Нет возможности отследить, что кто-то вошел в систему под одним именем с различных компьютеров;
- SQL -запросы выполняются непосредственно из кода сеансовых компонентов, что не очень удобно.
Эти недостатки будут, по возможности, исправлены в примере из следующего раздела. В нем рассматриваются объектные компоненты, которые позволяют сильно упростить разработку