Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

JAVA. Серверные приложения

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Часть 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 и serv­let — три основные спецификации платформы 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-объектами используя Inter­face 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 как способ взаимодействия с базами данных или Enterp­rise 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 как язык программирования и как набор технологии, прекрасно управля­ется за счет распределения задач и ресурсов между различными спе­циалистами команды разработчиков. Другая выгода данного подхода — полнейшая взаимозаменяемость выполняемых ролей различными Ja­va-компонентами.
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 реализует методы встроенных объектов, в отличие от Ja­vaScript, создающего динамическое представление на основе клиент­ского окружения. А так как JavaScript выполняется на стороне клиен­та, он не может иметь непосредственного доступа к серверным приложениям. Кроме того, JavaScript лишен возможности обрабаты­вать служебную информацию, предоставляемую http-протоколом, hea­ders, cookies и пр.
Часть 1. Электронная коммерция 49
3.3.2. Servlet
Java Servlets предназначены для замены стандартных CGI-скриптов, используемых в Web-приложениях. Как и всякий Java-компонент, serv­let не зависят от платформы, на которой исполняются. Главное требова­ние при работе с 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) значительно отличается от обычных Ja­vaBeans. Во-первых, 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 Per­sistence (BMP), в этом случае доступ к данным осуществляется, исполь­зуя специальный набор API, предназначенный для работы с базами данных, — JDBC, если же будет использоваться Container Managed