corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Введение в поддержку технологии Java EE в среде IDE NetBeans

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

Данный документ представляет основные концепции спецификации Java ЕЕ и их влияние на практическое программирование. В нем освещены следующие темы:

рисунок, показывающий содержимое страницы, относится к NetBeans IDE 6.8, 6.9, 7.0 и 7.1

Дополнительные сведения о разработке и развертывании приложений Java EE можно найти в Руководстве по Java EE 6 и Руководстве по Java EE 5.

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

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

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

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

package mypackage;

import javax.ejb.*;

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

}

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

annotation in ws

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

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

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

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

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

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

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

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

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

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

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

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

Интерфейс API сохранения состояния Java обладает следующими главными особенностями:

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

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

Веб-службы

Использование аннотаций в платформе Java ЕЕ существенно улучшило и упростило поддержку веб-служб. В этом отношении необходимо упомянуть следующие спецификации: JSR 224, "API Java для веб-служб на основе XML (JAX-WS) 2.0"; JSR 222, "Архитектура для привязки XML (JAXB) 2.0"; и JSR 181, "Метаданные веб-служб для платформы Java".

JAX-WS 2.0

AX-WS 2.0 представляет собой новый интерфейс API платформы Java EE для веб-служб. 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 можно использовать шаблоны в мастере создания файлов. Асинхронные веб-службы можно создавать с помощью редактора настройки веб-служб. В функциональные возможности дополнения кода входят аннотации, пригодные для веб-служб.



Что дальше?

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

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