Введение в поддержку технологии Java EE в среде IDE NetBeans
Среда IDE NetBeans разработана в тесном сотрудничестве с создателями Java EE и GlassFish, чтобы обеспечить максимальную интеграцию и простоту использования спецификации Java EE. Среда IDE NetBeans предоставляет наилучший способ быстрого изучения программирования Java ЕЕ и перехода к его продуктивному использованию.
Данный документ представляет основные концепции спецификации Java ЕЕ и их влияние на практическое программирование. В нем освещены следующие темы:
Платформа 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(), выводится следующее:
У каждого атрибута имеются значения по умолчанию. Следовательно, указывать атрибуты не требуется, если не планируется использовать значение, отличное от значения по умолчанию. В простых случаях достаточно значения по умолчанию, то есть атрибуты можно вообще не указывать.
Упрощение разработки программного обеспечения 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 можно в списке рассылки .