corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Введение в технологию Java EE 5

Среда IDE NetBeans 6.0 разработана в тесном сотрудничестве с группами Java EE и Glassfish и предоставляет тесную интеграцию и максимальную простоту использования спецификации Java EE 5. Среда IDE NetBeans 6.0 – идеальный способ быстрого изучения программирования на Java EE 5 и повышения производительности.

В настоящем документе приводится введение в основные принципы спецификации Java EE 5 и их применения на практике. Охватываются следующие темы:

Для получения дополнительных сведений о разработке и развертывании приложений Java EE 5 на сервере приложений Sun Java System Application Server Platform Edition 9 см. руководство Java EE 5 Tutorial.

Аннотации вместо дескрипторов развертывания

Платформа Java EE 5 упрощает развертывание приложений за счет устранения необходимости в дескрипторах развертывания за исключением дескриптора развертывания, требуемого спецификацией сервлета, – файла web.xml. Другие дескрипторы развертывания, например ejb-jar.xml, и записи, связанные с веб-службами в web.xml, устарели. Дескрипторы развертывания J2EE 1.4 часто оказывались слишком сложными, и при их заполнении было нетрудно ошибиться. Вместо них в платформе Java EE 5 используются "аннотации". Аннотации представляют собой модификаторы Java, подобные public и private, указываемые в коде. Например, в спецификации EJB 3, которая является частью спецификации Java EE 5, аннотации определяются для типа компонента, типа интерфейса, ссылок на ресурсы, атрибутов транзакции, безопасности и проч. Аналогичный набор аннотаций для веб-служб предоставляется спецификацией JAX-WS 2.0. Одни аннотации используются для создания артефактов. Другие аннотации используются для документирования кода. Третий вид предоставляет расширенные возможности, такие как безопасность или логика на этапе выполнения. В целом, аннотации в платформе Java EE 5 предназначены для решения следующих задач (среди прочих):

  • определение и использование веб-служб;
  • разработка программных приложений EJB;
  • привязка классов технологии Java к XML;
  • привязка классов технологии Java к базам данных;
  • привязка методов к операциям;
  • указание внешних зависимостей;
  • указание информации для развертывания, в т.ч. атрибутов безопасности.

Аннотации отмечаются символом @. При создании типа, в котором используются аннотации Java EE 5, в среде IDE в создаваемом коде предоставляются соответствующие метки-заполнители. Например, при создании в среде IDE сеансного компонента без сохранения состояния создается следующий код, в который входит аннотация @Stateless():

package mypackage;

import javax.ejb.*;

@Stateless()
public class HelloWorldSessionBean implements mypackage.HelloWorldSessionLocal {

}

ПРи использовании автозавершения кода возможен доступ к атрибутам аннотации, специфичным для элемента под курсором. Например, при нажатии Ctrl-Space в скобках аннотации @WebService() выводятся следующие данные:

Аннотация в веб-сервисе

У каждого атрибута есть значение по умолчанию. Следовательно, указывать атрибуты не требуется, если не планируется использовать значение, отличное от значения по умолчанию. В простых случаях достаточно значения по умолчанию, т.е. атрибуты можно вообще не указывать.

Упрощение разработки программного обеспечения EJB

Новый интерфейс API EJB 3.0 позволяет упростить процесс разработки путем сокращения и упрощения списка задач разработчика. Другими словами, требуется меньше классов и меньше кода. Это возможно благодаря тому, что значительная часть работы теперь выполняется контейнером. Ниже приведен список некоторых функциональных возможностей и преимуществ нового интерфейса API EJB 3.0:

  • Меньшее количество требуемых классов и интерфейсов. Для компонентов EJB более не требуются домашние интерфейсы и интерфейсы объектов, поскольку за видимость необходимых методов теперь отвечает контейнер. Достаточно указать бизнес-интерфейс. Для объявления компонентов EJB можно пользоваться аннотациями, причем управление транзакциями в таком случае выполняется контейнером.
  • Упразднены дескрипторы развертывания. Аннотации можно использовать непосредственно в классе для предоставления контейнеру данных о зависимостях и настройке, определявшихся ранее в дескрипторах развертывания. При отсутствии особых указаний для управления наиболее общими ситуациями контейнер использует правила по умолчанию.
  • Простой поиск. EJBContext позволяет выполнять поиск объектов в пространстве имен JNDI непосредственно из класса.
  • Упрощенная реляционная привязка объектов. Новый инетрфейс API Java Persistence упрощает реляционную привязку объектов и повышает ее прозрачность, позволяя привязывать исходные файлы Java к реляционным базам данных c помощью аннотаций в POJO.

В среде IDE можно создавать компоненты уровня предприятия так же, как и другие классы Java, причем для реализации необходимых методов и поддержания синхронизации классов с интерфейсами используется автозавершение кода и подсказки редактора. Для создания бизнес-методов или операций веб-службы не требуется использование специальных команд или диалоговых окон, однако эти команды могут применяться для упрощения знакомства с синтаксисом Java EE 5.

Использование вложения зависимостей для доступа к ресурсам

Вложение зависимости позволяет объекту напрямую запрашивать внешние ресурсы с помощью аннотаций. В результате исходный код становится чище, поскольку исчезает необходимость в коде создания или поиска ресурсов. Вложение ресурсов можно использовать в компонентах EJB, веб-контейнерах и клиентах.

Для запроса вложения ресурса в компоненте используется аннотация @Resource или, в случае некоторых специализированных ресурсов, аннотации @EJB и @WebServiceRef. В число ресурсов, которые могут быть вложены, входят следующие:

  • объект SessionContext;
  • объект DataSources;
  • интерфейс EntityManager;
  • другие компоненты уровня предприятия;
  • веб-службы;
  • очереди сообщений и темы;
  • фабрики подключений для адаптеров ресурсов.

Редактор исходного кода в среде IDE обеспечивает полное автозавершение кода для аннотаций вложения ресурсов, предоставляемых платформой Java EE 5. Кроме того, среда IDE позволяет автоматически вкладывать ресурсы в файлы при запуске команд наподобие Call EJB или Use Database.

Модель интерфейса API Java Persistence

В платформе Java EE 5 введен новый интерфейс API Java Persistence, разработанный в рамках JSR-220. Интерфейс API Java Persistence также может использоваться вне компонентов EJB, например, в веб-приложениях и в клиентах приложений, а также вне платформы Java EE – в приложениях Java SE.

API Java Persistence обладает следующими главными особенностями:

  • Объекты являются POJO. В отличие от компонентов EJB, в которых используется устойчивость, управляемая контейнером (CMP), объекты, использующие новые интерфейсы API, более не являются компонентами, и они не обязательно должны входить в модуль EJB.
  • Стандартизованное объектно-реляционное сопоставление. В новой спецификации стандартизирована работа с объектно-реляционным сопоставлением, что избавляет разработчика от необходимости изучения стратегий, специфичных для определенного поставщика. В интерфейсе API Java Persistence для указания сведений объектно-реляционного сопоставленния используются аннотации, однако поддержка дескрипторов формата XML сохранена.
  • Именованные запросы. Именованные запросы теперь являются статическими запросами, выраженными в метаданных. Они могут быть либо запросами интерфейса API Java Persistence, либо запросами в чистом SQL. При этом многократное использование запросов существенно упрощается.
  • Простые правила пакетирования. Поскольку компоненты объектов являются простыми классами технологии Java, их можно упаковывать практически из любого места в приложении Java EE. Например, компоненты объектов могут быть частью файла JAR EJB, файла JAR клиента приложения, библиотеки WEB-INF/lib,WEB-INF/classes или даже частью служебного файла JAR в файле архива приложения уровня предприятия (EAR). Благодаря этим простым правилам пакетирования теперь отсутствует необходимость в создании файла EAR для использования компонентов объектов из веб-приложения или прикладного клиента.
  • Отсоединенные объекты. Поскольку компоненты объектов являются POJO, они могут быть сериализованы и переданы по сети в другое адресное пространство, где возможно их использование в среде, не поддерживающей сохранение. В результате использование объектов передачи данных (DTO) больше не требуется.
  • Интерфейс API EntityManager. Прикладным программистам теперь доступен стандартный интерфейс API EntityManager, позволяющий выполнять операции Create Read Update Delete (CRUD) с участием объектов.

В среду IDE входят средства для работы с новым интерфейсом API Java Persistence. Классы объектов можно создавать автоматически из базы данных или создавать для них код вручную. В среде IDE также предусмотрены шаблоны и графические редакторы для создания и поддержания блоков сохранения.

Веб-службы

В платформе Java EE 5 использование аннотаций позволило значительно оптимизировать и упростить поддержку веб-служб. В этом отношении необходимо упомянуть следующие спецификации: JSR 224, Java API for XML-Based Web Services (JAX-WS) 2.0; JSR 222, Java Architecture for XML Binding (JAXB) 2.0; и JSR 181, Web Services Metadata for the Java Platform.

JAX-WS 2.0

JAX-WS 2.0 представляет собой новый интерфейс API платформы Java EE 5 для веб-служб. JAX-WS 2.0, являющийся преемником JAX-RPC 1.1, сохраняет естественную модель программирования RPC, усовершенствованную по нескольким направлениям: связывание данных, независимость от протокола и транспорта, поддержка стиля веб-служб REST и простота разработки.

Определяющее отличие от JAX-RPC 1.1 состоит в том, что все связывание теперь делегировано в JAXB 2.0. Это позволяет веб-службам на основе JAX-WS на 100% использовать схемы XML, что приводит к повышению совместимости и простоты использования. Эти две технологии отлично интегрированы, так что отпадает необходимость в жонглировании двумя наборами средств. Начиная с классов технологии Java, JAXB 2.0 позволяет создавать документы схемы XML, автоматически внедренные в документ WDSL (язык описания веб-служб), в результате чего пользователи избавлены от выполнения этой процедуры интеграции вручную, что нередко приводит к возникновению ошибок.

В JAX-WS 2.0 без дополнительной настройки поддерживаются протоколы SOAP 1.1, SOAP 1.2 и XML/HTTP. Расширяемости протоколов с самого начала уделялось огромное внимание, и JAX-WS 2.0 позволяет поставщикам поддерживать дополнительные протоколы и кодировки для повышения производительности – например, FAST Infoset – или для специализированных областей применения. Веб-службы, в которых используются вложения для оптимизации передачи и приема крупных объемов двоичных данных, выигрывают от использования стандарта MTOM/XOP (механизм оптимизации передачи сообщений/упаковка XML с оптимизацией для двоичных данных) от W3C без отрицательного воздействия на модель программирования. (Для получения информации о MTOM/XOP см. эту страницу) До технологии Java EE 5 для определения веб-служб требовались длинные, громоздкие дескрипторы. Теперь достаточно разместить аннотацию @WebService в классе технологии Java. Все общедоступные методы класса автоматически публикуются в виде операций веб-службы, и все их аргументы привязываются к типам данных схемы XML с помощью JAXB 2.0.

Асинхронные веб-службы

Поскольку вызовы веб-служб происходят по сети, время их исполнения предсказать невозможно. Производительность многих клиентов, особенно интерактивных, таких как настольные приложения на базе JFC/Swing, значительно снижается из-за необходимости ожидания ответа сервера. Во избежание снижения производительности в JAX-WS 2.0 предусмотрен новый асинхронный интерфейс API клиента. Этот интерфейс API позволяет прикладным программистам отказаться от самостоятельного создания потоков. Вместо этого управление удаленными вызовами с длительным временем выполнения возлагается на JAX-WS.

Асинхронные методы могут использоваться в сочетании с любыми интерфейсами, создаваемыми WSDL, а также с более динамичным интерфейсом API Dispatch. Для удобства программиста при импорте документа WSDL можно запроситьсоздание асинхронных методов для любых операций, определенных для веб-службы.

Существуют две модели использования:

  • В модели опроса сначала выполняется вызов. Затем по мере готовности запрашиваются результаты.
  • В модели обратного вызова сначала регистрируется обработчик. По мере прибытия ответов выдается оповещение.

Следует отметить, что поддержка асинхронных вызовов реализована полностью на стороне клиента, таким образом, какие-либо изменения целевой веб-службы не требуются.

В среду IDE входят инструменты для работы с JAX-WS. Для создания артефактов JAX-WS можно использовать шаблоны в мастере создания файла. Асинхронные веб-службы можно создавать с помощью редактора настройки веб-служб. В функциональные возможности дополнения кода входят аннотации, пригодные для веб-служб.



Что дальше?

Для получения дополнительной информации об использовании среды IDE NetBeans 6.0 для разработки приложений Java EE см. следующие материалы: