Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:JAVA. Серверные приложения
.pdf
Часть 1. Электронная коммерция 41
часть направить на системные нужды, для отладки или других сервисов.
Пакет J2EE содержит графическую программу (рис. 1.3), по размещению создаваемых Java-компонентов на J2EE-сервере. Имея достаточно простой и понятный интерфейс, Application Deployment Tool помогает разработчику разместить и управлять всеми созданным компонентами на J2EE сервере. Также с его помощью можно размещать
созданные компоненты на другом J2EE совместимом сервере.
Работе с J2EE сервером в целом и Application Deployment Tool в частности посвящена монография одного из ведущих специалистов SUN
Microsystems Моники Паулан (Monica Powlan). Данную монографию
можно найти на сайте компании SUN, посвященном технологии Java, —
www.java.sun.com.
Данный графический инструмент помогает только разместить созданные компоненты, но сами компоненты создаются в другой среде, а
проектируются будущие компоненты с помощью совершенно других
средств.
Существует много разнообразных CASE средств, облегчающих проектирование приложения на любом уровне выбранной топологии. Большинство из этих средств достаточно дороги и требуют соответствующей
квалификации персонала. В современном программировании уже достаточно давно описана простая система проектирования сложных приложений. Основанная на графическом представлении логических компонентов, данная система обеспечивает наглядное представление будущего приложения.
MVC — model — view — controller — абстракция, представляющая
разрабатываемые компоненты в виде трех ключевых узлов.
Первый узел — Model — описывает модель создаваемого приложения. Модель описывает разделение программных данных и бизнес-данных. В модели описываются все возможные способы работы с данными.
Модель приложения для всех клиентов выглядит одинаково.
Следующий ключевой узел — представление данных — view — описывает содержание модели. View определяет, как отражаются данные
модели. Самый зависимый от типа клиента узел. Различные клиенты
по-разному интерпретируют данные, используя только доступные им
средства.
Последний узел выполняет работу приложения — controller. Узел,
описывающий поведение приложения. Для каждого типа клиентов должен существовать собственный контроллер, так как каждый тип клиента работает только со своими типами данных.
При всей своей простоте данная система проектирования достаточно
детально описывает не только все компоненты приложения, но и взаимоотношения между ними. Именно эта система будет в дальнейшем использоваться при описании работы приложения. Описанная выше система MVC не является программным продуктом и не требует специального изучения, в отличие от распространяемых Case средств.
MVC не панацея проектировщика. Представляя элементарные средства, она лишена гибкости и представления структуры приложения в
ином разрезе. Привязка проекта приложения к существующим физиче-

42 Часть 1. Электронная коммерция
Рис. 1.4. Логическое представление Web-приложения
ским системам, описание компонентов с точки зрения пользователя, логическое представление данных — все эти и множество других задач
решаются при помощи различных средств проектирования.
Существует несколько стандартных шаблонов проектирования программного обеспечения. Но из большого многообразия можно выделить
UML. Unified Modeling Language (UML) — универсальный язык моделирования, более тонкий и точный инструмент проектирования, чем
описанная выше система MVC. UML используется в большинстве коммерческих Case средств, таких, как Rational Rose, и широко используется при проектировании. В отличие от MVC — не имеющей четкой
графической нотации, UML — средство, использующее свыше трех десятков графических представлений. Благодаря именно этим представлениям проектируется вся система в целом. UML очень мощное средство, помогающее найти общий язык различным специалистам, занятым в
производстве приложения. Не являясь языком программирования, UML
в то же время, создан для программистов. Его графическая нотация уже
стандартизирована и хорошо описана в руководствах. Опять же автор
вынужден опустить описание UML в данной книге в силу невозможности объять весь материал. Знания UML достаточно важны, но требуют
дополнительного описания, что выходит за рамки книги. Об UML говорилось только для того, чтобы проектировщик, использовав один раз
MVC, в следующий раз на использование UML. Поскольку в большинстве приложений описание компонентов возможно как средствами
MVC, так и в графической нотации UML.
Все дальнейшие описания этапов создания программных «шедевров»
будут основываться именно на MVC как шаблоне проектирования.
Познакомившись с основными компонентами Web-системы, можно
перейти непосредственно к Java-компонентам.
Платформа J2EE основывается на нескольких различных спецификациях, являющихся в какой-то степени базовыми для создания серверных приложений. Enterprise Java bean, Java server Page и servlet — три основные спецификации платформы J2EE. Но прежде чем
описывать серверные компоненты, необходимо узнать, что такое Java
клиент.

Часть 1. Электронная коммерция 43
3.1. Java Web-клиент
Если говорить о непосредственном отношении Java к e-commerсe, то
можно выделить три основных взаимозаменяемых направления. Первое — создание JVM для электронных устройств. Второе — создание
электронных устройств, способных работать с JVM, и, наконец набор
API, переносимый на оба вида устройств. Компания SUN, как и другие
производители JVM, выпускает различные версии JVM для различных
операционных систем. Существующие версии JVM для встроенных систем, начиная с кредитных карт и заканчивая мобильными телефонами,
уже полностью подготовлены для использования ресурсов сети. Среди
многообразия JVM можно выделить виртуальную машину компании
IBM J9, предназначенную для встраиваемых систем, вплоть до банковских карточек и идентификационных меток. С помощью J9 можно легко
научить любого клиента общаться с настоящим виртуальными машинами Java. Компания SUN предлагает несколько наборов API для различных встроенных систем. Уже существует спецификация на системы реального времени, свободно распространяется Java Card Development
Kit 2.1, кроме спецификации на карты распространяются средства для
разработчиков встроенных систем (Embedded Java), новая технология
JINI предназначена для создания интеллектуальных устройств. Все,
что раньше писалось на языке ADA, переходит в руки программистов
Java. Это только касается клиентской части, но ведь существуют еще и
серверные решения, и их тоже не мало. Создание независимого клиента, одно дело, создание приложения, способного открыть этому клиенту
дорогу в электронный мир, да еще и мир коммерческий, — совсем другое дело. Универсальность Java значительно облегчает интеграцию всевозможных элементов Web-приложений на едином уровне.
Java Web-клиент на платформе J2EE — это различные типы клиентов, работающих как с внешними клиентами предприятия, так и во
внутренней сети. Платформа J2EE определяет несколько типов клиентов: Web-клиент, EJB-клиент и стандартное приложение. Первый тип
стандартный — Web-клиент, работающий на http-протоколе с HTMLстраницами, где Java-компонентом является апплет. Для внешних клиентов типичным окружением выполнения является Web-браузер, использующий простой HTML-текст, динамические HTML-страницы сгенерированные JSP, или апплеты. Чаще всего Web-клиент содержит только презентационную графику приложения, вся же бизнес-логика
расположена на сервере. Web-клиенты используют HTTP или HTTPS
транспортный протокол благодаря широкому распространению httpпротокола. Клиенты, использующие его для связи, самые популярные.
Внутренние клиенты, EJB-клиенты, работают только с EJB и не используют Web-сервера. EJB-клиенты очень похожи по своему содержанию на обычные Java-приложения, за одним исключением: вместо сервера используется EJB-контейнер, содержащий методы обработки бизнес-логики, а презентационная графика приложения GUI располагается
на самом клиенте. Все EJB-клиенты работают только по протоколу
RMI-IIOP. Доступ EJB-клиентов к серверным функциям осуществляется через стандартные сервисы, JMS обеспечивает работу сообщениями.

44 Часть 1. Электронная коммерция
JDBC организует доступ EJB-клиента к базам данных. JNDI предназначена для эмуляции файловой системы. Презентационная графика использует либо swing компоненты, либо AWT компоненты. Хотя использование AWT не запрещается, предпочтительнее использование swing
интерфейса. Использование swing-форм в EJB-клиентов позволяет создать пользовательский интерфейс клиента, для нескольких различных
платформ, способ Look-and-Feel. EJB по своей природе уже является
распределенным приложением, в отличие от Web-клиентов. Кроме того,
секретность обеспечивается не только JVM, но и контейнером, на котором загружен EJB-клиент.
Еще один тип клиентов, непосредственно приложения работающих с
третьим уровнем, т. е. хранилищами данных предприятия, минуя средний — Web-серверный уровень. Данные приложения могут как содержать элементы графического интерфейса пользователя, так и быть
приложениями командной строки. Эти приложения являются системными, играя роль административных консолей управления данными. Для
придания большей гибкости приложению клиент может использовать и
другие Java-компоненты, такие, как JavaBean или Enterprise JavaBean.
В последнем случае и бизнес-логика, и презентационная графика содержатся в самом приложении. Главным способом общения с корпоративным данными, для данного типа клиентов, служит технология JDBC.
Использование таких клиентов по мере возможности необходимо ограничить, поскольку они обращаются напрямую к базе данных.
Любое клиентское приложение, будь то апплет, независимое Javaприложение или встроенное приложение, обязательно использует JVM,
это плюс и минус одновременно.
3.2. Java Web — транспортные протоколы
Совместное использование J2EE и стандартного J2SDK позволяет создавать клиент-серверные приложения. Кроме серверных спецификаций, чье описание можно найти в этой книге, платформа J2EE содержит
описание транспортных уровней, тире между словом «клиент» и словом
«сервер». Для обеспечения доступа к различным информационным системам именно на транспортном уровне компания SUN предлагает несколько наборов API, описывающих всевозможные способы работы
транспортных уровней.
•
Java Database Connectivity (JDBC) — предназначен для работы с
базами данных. JDBC представляет прекрасные возможности обеспечения доступа к различным базам данных J2EE-приложений.
•
Java Naming and Directory Interface (JNDI) — аналог файловой
системы по управлению ресурсами, обеспечивает поддержку произвольных имен в распределенных средах. Платформа J2EE предоставляет новый способ организации доступа к различным ресурсам, известный как JNDI.
•
Java Message Service (JMS) — спецификация принятия и пересылки сообщений. Является интерфейсом обработки асинхронных запросов, ответов или событий, используемых в приложении. JMS

Часть 1. Электронная коммерция 45
координирует работу асинхронных сообщений. Системы управления очередями сообщений являются идеальным решением для
распределенных систем, где множество клиентских программ отправляет сообщение одной и той же серверной программе. JMS
полностью реализованная на Java система управления очередями
сообщений.
JavaMail — набор API для работы с электронной почтой.
•
Java IDL — набор классов для работы с CORBA. Интерфейс? опи-
•
сывающий создание связей с CORBA-объектами используя Interface Definition Language (IDL). Такие объектные технологии, как
CORBA или RMI, предназначены для решения проблем, связанных
с использованием удаленного взаимодействия — поиска объектов,
упаковки и пересылки.
Java Transaction (JTA) — позволяет приложениям использовать
•
транзакции. JTA описывает стандартный интерфейс управляющим
транзакциями и сторонами, использующими транзакцию. Система
транзакции платформы J2EE состоит из трех элементов: бизнесприложение, J2EE-сервер и менеджера транзакций, управляющего
доступом к совместно используемым ресурсам. Java Transaction
Service (JTS) — специальная реализация менеджера транзакций
поддерживающего
Одновременно с рождением самой технологии Java появился спо-
•
соб вызова удаленных методов или RMI. RMI сразу создавался в
контексте сетевого языка программирования как один из способов
создания распределенных приложений.
•
Совместное использование RMI и технологии CORBA привело к
созданию еще одного способа передачи используемого в Web Javaприложениях. RMI_IIOP набор API, используемых поверх протокола передачи IIOP. Данная возможность характеризует использование в одном распределенном приложении специального интерфейса, написанного на Java для вызова объектов, реализованных
на других языках программирования. В отличие от стандартного
RMI, действие которого ограничиваются только Java-компонентами, построение Web-приложений с помощью CORBA привязывает
разработчика только к Java-компонентам.
Так, например, сетевой уровень описывается несколькими Java API
(табл. 3), часть из которых поставляется в стандартном JDK, другие же
либо полностью независимы, либо являются расширениями, например
как JNDI.
API используемые для сетевого уровня Web-приложения
Объекты доступа Используемый протокол Используемое Java API
Печать IPP/DFS JDK java.2d, JNPAPI,
Доступ к директориям LDAP, NDS, DNS JNDI, javax.naming.ldap
Доступ к файлам NFS,NTFS, AFS JDK Java.io
Таблица 3

46 Часть 1. Электронная коммерция
Объекты доступа Используемый протокол Используемое Java API
Сетевой протокол TCP/IP JDK Java.net
Обеспечение безопасности CDSA, SSL, IPsec, x.509V3 JSSL, JCE
Транзакционный механизм JTA
Вызов удаленных методов RPC JDK RMI
Асинхронная пересылка и передача данных JMS
3.3. Серверные Java-компоненты, используемые при создании
Web-приложений
Во многих Web-системах средний уровень (middle tier) представляет
связующее звено между клиентом и данным предприятием (back-end).
На промежуточном уровне обычно располагается сервер, Web или сервер приложений (Application). Организация промежуточного звена
предназначена для реализации различных дополнительных сервисов,
облегчающих управление клиентским запросами, а самим клиентам получать быстро и верные данные. На среднем уровне располагаются
основные компоненты, реализующие следующие функции:
обработка входящей информации;
•
• распределение ресурсами;
•
обработка бизнес-правил;
•
управление транзакциями;
•
поддержка различных типов клиентов.
Java Web-server — среднее звено трехуровневой архитектуры Webприложения, использующего Java как основной язык. Одноименный пакет распространяется компанией SUN, но здесь речь пойдет не о программном продукте JWS Web-сервере, а о концепции сервера, основанного на Java-технологиях. Хотя сам JWS полностью построен на концепции Java Web-сервера и может использоваться как отправная точка
при создании Java Web-приложений, но обычный JWS лишен части
серверных компонентов, таких, как EJB-сервер, поэтому будет рассматриваться только концепция создания серверных компонентов при помощи языка Java.
Кроме обычных приложений, исполняемых на JVM, и апплетов, работающих в среде браузера, широкое распространение стали получать
новые решения использования Java. Как указывалось выше, серверные
компоненты в большинстве случаев располагаются на сервере, точнее,
на Application Server либо генерируются специальными средствам на
сервере. Многопоточность Java — одна из основных причин использования Java для создания серверных компонентов. Большой выбор API
представляет создателю серверных приложений громадный плюс по
улучшению всего приложения в целом. Серверные компоненты, созданные на Java, имеют все преимущества как самого языка, так и технологии, реализуемых на данном языке. Одним из них является Java Server
Page. Заменителем стандартных CGI и скриптов можно назвать servlet.

Часть 1. Электронная коммерция 47
Доступ к базам данных осуществляется при помощи Enterprise Java
Bean. Взгляд на сервер Web-приложение, использующие Java-технологии, через парадигму MVC выглядит следующим образом:
JSPs (или HTML страницы) являются представления (View);
•
servlet является контроллером (Controller);
•
EJB или обычные JavaBean описывают модель (Model).
•
Взаимодействие между компонентами не ограничивается связями,
определенными в парадигме MVC, поскольку практически каждый компонент может выполнять различные роли в Web-приложении.
Популярная модель проектирования MVC Model/View/Controller используется не только для проектирования обычных приложений, она
также прекрасно подходит при разработке Web-приложений. Теперь
достаточно зная о Java-компонентах Web-приложений, можно с достаточной долей вероятности описать стандартное Java Web-решение.
На т. д.. 1.5 отражено стандартное Web-решение при использовании
Java-компонентов.
Указаны все основные компоненты Web-приложения, когда стратегическим языком является Java. Не указывая деталей, таких, как
транспортные уровни, реализуемые с помощью Java Message Service
(JMS), SQLJ как способ взаимодействия с базами данных или Enterprise Information System (EIS), можно сказать, что данная модель — готовое решение для e-commerсe приложения. В описанной схеме за
предоставление данных клиенту в виде HTML-страницы или XML-документа отвечает JSP, в терминах MVC-view. Представленные графические компоненты определены на основе действия пользователя при
формировании запроса. Servlet-controllers не имеют графических элементов, но предназначены для обработки любых данных, в том числе и
презентационных. За работу с данными ответственны bean, Enterprise
или обычные JavaBean,описывающие модель приложения. Доступ к
bean осуществляется либо из JSP, либо из servlet. Данное решение
принимается конкретно для каждого создаваемого Web-приложения.
Преимуществ использования схемы, приведенной выше, несколько. Вопервых, использование Java как единого языка для всех компонентов
Рис. 1.5. Web-приложение с использованием технологии Java

48 Часть 1. Электронная коммерция
стандартизирует процесс разработки. Во-вторых, данная схема полностью независима от используемого программного обеспечения. В-третьих, четко определены роли различных компонентов. Все вышесказанное подводит к четвертому выводу. Проект, использующий Java как
язык программирования и как набор технологии, прекрасно управляется за счет распределения задач и ресурсов между различными специалистами команды разработчиков. Другая выгода данного подхода —
полнейшая взаимозаменяемость выполняемых ролей различными Java-компонентами.
3.3.1. JSP
JavaServer Pages — текстовая страница, состоящая из HTML-тегов,
встроенного Java-кода и графических элементов. Основными преимуществами JSP является возможность работы с JavaBean и создание
собственных тегов.
JSP предназначена не только для создания визуального представления данных, при помощи стандартных тегов HTML, но и для реализации бизнес-методов самого приложения. Использование в обычной
HTML-странице языка Java значительно улучшает всю работу приложения. JSP-приложение можно представить как смесь различных технологий, состоящей из апплеты, servlet, Java Bean HTML-тегов и специальных JSP-конструкций. Весь этот «салат» обеспечивает разработчика всем необходимым. Можно отказаться практически от любого
компонента, используемого в обычном Web-приложении. Встроенные
теги расширяют возможности обычных HTML-тегов, а использование
языка Java дает возможность создавать серверные приложения. JSP не
надо компилировать, а изменения вносятся непосредственно в HTMLстраницу, и все, JSP приложение готово к работе. Компания SUN рекомендует совместное использование пары JSP/servlet в многоуровневой
архитектуре Web-приложений, для разделения бизнес-логики и представления данных.
Использование JSP имеет ряд преимуществ перед стандартными
средствами создания Web-приложений. JSP реализован на языке Java,
это гарантирует его независимость от операционной системы, в отличие от широко распространенного языка VisualBasic, работающего
только на платформах компании Microsoft. В отличие от servlet, JSP
можно изменять без перекомпиляции всей программы, значительно
удобнее читать и писать обычный HTML, чем Java-код. JSP прекрасно
заменяет стандартные server-side include (SSI), очень маленькие текстовые данные, помещаемые в клиентское приложение для отражения
различных системных данных. Вместо использования отдельной программы JSP реализует методы встроенных объектов, в отличие от JavaScript, создающего динамическое представление на основе клиентского окружения. А так как JavaScript выполняется на стороне клиента, он не может иметь непосредственного доступа к серверным
приложениям. Кроме того, JavaScript лишен возможности обрабатывать служебную информацию, предоставляемую http-протоколом, headers, cookies и пр.

Часть 1. Электронная коммерция 49
3.3.2. Servlet
Java Servlets предназначены для замены стандартных CGI-скриптов,
используемых в Web-приложениях. Как и всякий Java-компонент, servlet не зависят от платформы, на которой исполняются. Главное требование при работе с servlet — наличие в Application Server специальной
программы-обработчика. В сравнении традиционными CGI использование servlet имеет ряд преимуществ. Servlet работают только на Webсервере и вызываются только при поступлении клиентского запроса.
Кроме прочего, servlet имеет возможность управлять системным окружением.
Одним из многочисленных плюсов servlet является большой набор
сетевых API, практически удовлетворяющий все потребности по созданию сетевых приложений и серверных программ по обеспечению
трафика и управлению клиентской сессией, а также работе самого
сервера.
Использовать JSP-приложение можно совместно с Servlet-приложением, а можно как самостоятельное приложение. В основном servlet
применяются при обеспечении взаимодействия между приложениями,
в то время как JSP чаще используются для создания «образа» страницы.
Servlets — очень мощный инструмент, с помощью которого можно
реализовывать любые бизнес-приложения. Использование всего спектра Java API’s делает servlet незаменимым для создания серверных
компонентов e-commerсe приложений.
Servlets построены на модели request/response и более точно используют клиент-серверную архитектуру. В модели request/response клиент посылает запрос (request) на сервер, который, в свою очередь, отвечает (responds) клиенту. Запрос может быть передан на сервер для обработки servlet любым сетевым протоколом:
HTTP,
URL,
FTP,
URL
или протоколом, созданным пользователем.
3.3.3. EJB
Одной из ключевых технологий для создания e-commerсe приложения является существующая на платформе J2EE технология Enterprise
Java Beans (EJB). EJB-компоненты выполняются на сервере приложений в специальной области памяти, называемой контейнер. Вся бизнеслогика теперь не разбросана по базам данных и серверным приложениям, работает в единой структуре EJB-сервера. Технология Enterprise
JavaBeans определяет некоторый набор универсальных и предназначенных для многократного использования компонентов, которые называются enterprise beans. Архитектура EJB позволяет упростить процесс
создания сложных систем разбиением его на несколько отдельных этапов, с каждым из которых сопоставлены свои задачи.

50 Часть 1. Электронная коммерция
Использование Enterprise JavaBeans для описания бизнес-логики
имеет ряд преимуществ.
Контейнер изолирует все компоненты и для каждого компонента
•
создает уникальное окружение, обеспечивая при этом компонент
всеми необходимыми сервисами. В результате проектирование
бизнес-логики связано только с бизнес-логикой и отпадает необходимость заниматься разработкой системных сервисов.
Компоненты Enterprise JavaBeans адаптированы для работы с хра-
•
нилищами данных, используемых бизнес-логикой приложения.
Основная часть разработки ложится не на приложение, а на базу
данных.
Enterprise JavaBeans (EJB) значительно отличается от обычных JavaBeans. Во-первых, EJB выполняются на сервере, во-вторых, доступ к
методам EJB осуществляется через специальные интерфейсы. Все переменные EJB хранит в базе данных, доступ к которой осуществляется
через контейнер. EJB обладают рядом специфических свойств, присущих только транзакционным компонентам. EJB представляет разработчику разные способы организации доступа к внешним источникам. EJB
«живут» и выполняют свои методы в специальной области памяти, называемой контейнер.
Существуют два типа Enterprise JavaBeans:
1. Session bean;
2. Entity bean.
Session bean имеет следующие характеристики, отличающие его от
Entity bean:
•
один Session bean создается только для одного клиентского запроса;
•
может осуществлять связь с другими компонентами;
•
может обновлять данные в основной базе данных;
•
жизнь Session bean длится только во время клиентской сессии
•
Session bean автоматически уничтожается при остановке EJB-сервера. Клиент должен установить новое соединение с сервером, тогда Session bean «возродится»;
•
Session bean не хранит свои переменные в базе данных.
Entity bean имеет свои характеристики:
•
обязательно хранит все переменные в базе данных;
•
Entity bean предназначен для взаимодействия с другими компонентами;
•
Entity bean используется совместно с несколькими клиентами;
•
так как хранит все свои значения в базе данных, не способен к
«смерти». «Живет», пока «жива» база данных;
•
Entity bean продолжает свою деятельность после перезагрузки системы.
При создании EJB важно учитывать тип взаимодействия Entity bean
с хранилищем данных. Если будет использоваться Bean Managed Persistence (BMP), в этом случае доступ к данным осуществляется, используя специальный набор API, предназначенный для работы с базами
данных, — JDBC, если же будет использоваться Container Managed
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
