blob: f44ab59a935887fc11458226fea56a42e46fc675 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- -*- xhtml -*- -->
<!--
Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Создание безопасных компонентов EJB в Java EE</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="A guide to creating a simple enterprise application with NetBeans IDE">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
<h1>Создание безопасных компонентов EJB в Java EE</h1>
<p>Поддержка спецификации Java EE в IDE NetBeans позволяет полностью воспользоваться многими преимуществами функций Java EE, что позволит упростить разработку приложений. Значительным улучшением спецификации Java EE 5 было включение аннотаций. Использование аннотаций позволяет устранить множество кода заглушек, используемого при написании кода приложений, и уменьшает объем необходимой настройки при развертывании приложения.
</p>
<p>Использование аннотаций значительно упростило разработку и настройку компонентов EJB. Аннотации позволяют указывать множество свойств настройки, которые ранее указывались в файлах дескриптора развертывания, что устраняет необходимость во множестве таких файлов. Хотя для приложений все еще могут требоваться некоторые файлы дескриптора развертывания (например, <tt>web.xml</tt>), редактор дескриптора развертывания с несколькими представлениями среды IDE значительно упрощает изменение файлов.</p>
<p>Аннотации упрощают создание безопасных компонентов EJB. Вместо настройки безопасности компонента EJB в дескрипторе развертывания <tt>ejb-jar.xml</tt> можно использовать аннотации безопасности для настройки авторизации непосредственно в исходном коде. Для приложений J2EE Java EE 5 не требуется файл <tt>ejb-jar.xml</tt> или <tt>application.xml</tt>.</p>
<p>Обзор некоторых функций спецификации Java EE см. в разделе <a href="javaee-intro.html">Введение в технологию Java EE</a>. Дополнительные сведения о спецификациях аннотаций см. в разделе <a href="http://jcp.org/en/jsr/detail?id=250" target="_blank"> JSR 250: общие аннотации для платформы Java</a>.</p>
<p><b>Содержание</b></p>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0">
<ul>
<li><a href="#ex2">Создание группы безопасности на сервере приложений</a></li>
<li><a href="#ex2b">Создание библиотеки классов Java для удаленного интерфейса</a></li>
<li><a href="#ex3">Создание и защита приложения J2EE</a>
<ul>
<li><a href="#ex3a">Создание проекта приложения J2EE</a></li>
<li><a href="#ex3b">Защита метода в сеансном компоненте</a></li>
<li><a href="#ex3c">Настройка дескрипторов развертывания</a></li>
</ul>
</li>
<li><a href="#ex4">Создание клиента приложения</a></li>
<li><a href="#ex5">Выполнение приложения</a></li>
</ul>
<p><b>Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Программное обеспечение или материал</th>
<th class="tblheader" scope="col">Требуемая версия</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">IDE NetBeans</a></td>
<td class="tbltd1">Версия 7.2, 7.3, 7.4, 8.0, Java EE</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Комплект для разработчика на языке Java (JDK)</a></td>
<td class="tbltd1">версия 7 или 8</td>
</tr>
<tr>
<td class="tbltd1">Сервер GlassFish</td>
<td class="tbltd1">3.1.x, 4.x</td>
</tr>
</tbody>
</table>
<p class="tip">Для этого учебного курса необходимо зарегистрировать локальный экземпляр сервера GlassFish в среде IDE. Если на вашем компьютере установлена версия 'Java EE' среды IDE, сервер приложений должен быть уже установлен и зарегистрирован. Если сервер приложений не зарегистрирован в среде IDE, выберите &quot;Сервис &gt; Серверы&quot;, чтобы зарегистрировать сервер в диспетчере серверов. Приложения масштаба предприятия нельзя развернуть на веб-сервере Tomcat.</p>
<p><b>Предпосылки</b></p>
<p>Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:</p>
<ul>
<li>Программирование на Java</li>
<li>IDE NetBeans</li>
</ul>
<h2><a name="ex2"></a>Создание группы безопасности на сервере приложений</h2>
<p>В этом примере доступ к компоненту EJB необходимо предоставить только пользователям из группы <tt>bank_users</tt>. Будет создан пользователь <tt>manager</tt> в группе <tt>bank_users</tt> в области безопасности <tt>file</tt> на сервере приложений.</p>
<ol>
<li>Запустите сервер приложений, щелкнув правой кнопкой мыши его узел в окне 'Службы' и выбрав 'Пуск'.</li>
<li>Правой кнопкой мыши щелкните узел сервера приложений и выберите 'Просмотр консоли администратора домена', чтобы открыть консоль администрирования сервера GlassFish в браузере.</li>
<li>Разверните узел <strong>server-config</strong> в узле &quot;Настройка&quot; на левой панели переходов.</li>
<li>Щелкните <strong>Безопасность &gt; Области &gt; файл</strong>, чтобы открыть окно &quot;Изменить область&quot;.<br> <img alt="снимок панели навигации на консоли администрирования" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/console-file-realm.png" title="Выбор узла области файла на консоли администрирования сервера приложений" />
</li>
<li>Нажмите кнопку &quot;Управление пользователями&quot; в верней участи панели &quot;Редактировать область&quot;, чтобы открыть панель &quot;Изменить область&quot;.<br> <img alt="снимок панели &apos;Изменить область&apos; на консоли администрирования" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/console-edit-realm.png" title="Узел панели &apos;Изменить область&apos; на консоли администрирования сервера приложений" />
</li>
<li>Нажмите кнопку &quot;Новый&quot; в верхней части таблицы &quot;Пользователи файлов&quot; на панели &quot;Пользователи файлов&quot;.</li>
<li>Введите следующие данные в форму &quot;Новый пользователь области файлов&quot;. Нажмите кнопку &quot;ОК&quot;.
<table width="25%" >
<tr>
<th width="50%" class="tblheader" scope="col">Имя</th>
<th width="50%" class="tblheader" scope="col">Значение</th>
</tr>
<tr>
<td class="tbltd1">Идентификатор пользователя</td>
<td class="tbltd1">диспетчер</td>
</tr>
<tr>
<td class="tbltd1">Список групп</td>
<td class="tbltd1">bank_users</td>
</tr>
<tr>
<td class="tbltd1">Пароль</td>
<td class="tbltd1">&quot;password&quot; &ndash; пароль</td>
</tr>
</table>
<p>Форма должна быть схожей со следующим изображением.</p>
<img alt="снимок панели &apos;Создать пользователя области файла&apos; на консоли администрирования" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/console-new-user.png" title="Панель &apos;Создать пользователя области файла&apos; на консоли администрирования сервера приложений" />
<p>При нажатии кнопки &quot;ОК&quot; сервер создает пользователя и открывает панель &quot;Пользователи файлов&quot;. Можно заметить, что появился пользователь с именем <tt>manager</tt>.</p>
<img alt="снимок панели &apos;Пользователи файлов&apos; на консоли администрирования" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/console-file-users.png" title="Панель &apos;Пользователи файлов&apos; на консоли администрирования со списком пользователей" />
</li>
</ol>
<p>Теперь, после создания пользователя, будет создано приложение J2EE для проверка возможности пользователя просматривать данные.</p>
<a name="ex2b"></a>
<h2>Создание библиотеки классов Java для удаленного интерфейса</h2>
<p>В этом упражнении будет создан простой проект библиотеки классов Java, содержащий удаленные интерфейсы для сеансного компонента. Скомпилированный файл JAR библиотеки классов будет добавлен к пути к классам в модуле EJB и к клиенту приложения, который будет использоваться для вызова сеансного компонента.</p>
<ol>
<li>Выберите &quot;Файл &gt; Новый проект&quot;, затем выберите &quot;Библиотека классов Java&quot; в категории &quot;Java&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите SecureRemoteInterface для имени проекта. </li>
<li>Укажите местоположение проекта. Нажмите кнопку 'Готово'.</li>
</ol>
<p>В следующем разделе будет создан сеансный компонент в приложении J2EE. Доступ к сеансному компоненту будет осуществляться через удаленный интерфейс. При создании сеансного компонента среда IDE автоматически создаст удаленный интерфейс в библиотеке классов и добавить JAR библиотеки классов к пути к классам приложения J2EE.</p>
<h2><a name="ex3"></a>Создание и защита приложения J2EE</h2>
<p>Приложение J2EE будет состоять из простого сеансного компонента, доступного через удаленный интерфейс в проекте библиотеки классов.</p>
<div class="indent">
<a name="ex3a"></a>
<h3>Создание проекта приложения J2EE</h3>
<p>В этом упражнении будет создано приложение J2EE, содержащее модуль EJB.</p>
<ol>
<li>Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N; ⌘-Shift-N on Mac), а затем в категории Java EE выберите шаблон 'Корпоративное приложение'. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <strong>Secure</strong> для названия проекта и выберите его местоположение.</li>
<li>Снимите флажок &quot;Использовать отдельную папку&quot;, если он установлен.<br />
<p>В рамках этого руководства копирование библиотек проекта в выделенную папку не целесообразно, поскольку совместное использование библиотек с другими пользователями или проектами не требуется. </p>
Нажмите кнопку &quot;Далее&quot;.</li>
<li>Установите сервер GlassFish, затем для параметра &quot;Версия Java EE&quot; выберите &quot;Java EE 6&quot;.</li>
<li>Выберите &quot;Создать модуль EJB&quot; и отмените выбор &quot;Создать модуль веб-приложения&quot;. Нажмите кнопку 'Готово'.</li>
</ol>
<img alt="снимок панели &apos;Создать пользователя области файла&apos; на консоли администрирования" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/new-entapp-wizard.png" title="Панель &apos;Создать пользователя области файла&apos; на консоли администрирования сервера приложений" /> <a name="ex3b"></a>
<h3>Обеспечение безопасности метода в сеансном компоненте</h3>
<p>В этом упражнении будет создан сеансный компонент в проекте модуля EJB. Сеансный компонент не выполняет ничего сверхъестественного. Он просто возвращает пример суммы баланса. Будет создан метод <tt>getStatus</tt>, который будет защищен методом компонента путем добавлении аннотации <tt>@RolesAllowed</tt> и указания ролей безопасности, которым разрешен доступ к методу. Эта роль безопасности используется приложением и не совпадает с пользователями и группами на сервере. Можно сопоставить роль безопасности с пользователями и группами позже при настройке дескрипторов развертывания.</p>
<p>Аннотации безопасности могут применяться индивидуально к каждому методу в классе или ко всему классу. В этом простом упражнении будет использоваться <tt>@RolesAllowed</tt> для аннотации метода, но спецификация Java EE определяет другие аннотации безопасности, которые могут использоваться в компонентах EJB. </p>
<ol>
<li>В окне 'Проекты' щелкните правой кнопкой мыши узел модуля EJB (Secure-ejb) и выберите 'Создать' > 'Компонент Bean сеанса'.</li>
<li>Введите <strong>AccountStatus</strong> для имени базового компонента, <strong>bean</strong> для пакета.</li>
<li>Выберите &quot;Удаленный интерфейс в проекте&quot; для типа интерфейса.</li>
<li>Выберите SecureRemoteInterface в раскрывающемся списке. Нажмите кнопку "Готово".<br> <img alt="снимок мастера создания компонентов сеансов" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/new-sessionbean-wizard.png" title="Удаленный интерфейс выбран в мастере создания компонентов сеансов" />
<p>При нажатии кнопки &quot;Готово&quot; среда IDE создает класс <tt>AccountStatus</tt> и открывает файл в редакторе исходного кода.
<p>Среда IDE также создает удаленный интерфейс <tt>AccountStatusRemote</tt> для базового элемента в пакете <tt>bean</tt> в проекте библиотеки классов SecureRemoteInterface и добавленном JAR библиотеки классов SecureRemoteInterface к пути к классам проекта модуля EJB.</p>
<img alt="снимок окна &apos;Проекты&apos;, в котором отображается структура" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/projects-window-bean.png" title="Окно &apos;Проекты&apos;, в котором отображаются компонент сеанса и библиотека классов на пути к классу" />
<p>При открытии категории &quot;Библиотеки&quot; диалогового окна &quot;Свойства&quot; модуля EJB можно заметить, что JAR добавлен к библиотеке для компиляции.</p>
</li>
<li>В редакторе исходного кода добавьте следующее объявление поля (полужирным шрифтом) к <tt>AccountStatus</tt>:<br />
<pre class="examplecode">public class AccountStatus implements AccountStatusRemote {
<b>private String amount = "250";</b></pre>
</li>
<li>В редакторе исходного кода щелкните правой кнопкой мыши в классе и выберите 'Вставить код' (Alt-Insert; Ctrl-I в Mac), а затем выберите 'Добавить бизнес-метод', чтобы открыть диалоговое окно 'Добавить бизнес-метод'.</li>
<li>Введите <strong>getStatus</strong> в качестве имени метода, затем установите для типа возвращаемого значения <tt>String</tt>.
<p>Среда IDE автоматически открывает бизнес-метод в удаленном интерфейсе.</p></li>
<li>В редакторе исходного кода добавьте следующую строку с полужирным шрифтом к методу <tt>getStatus</tt>.
<pre class="examplecode">public String getStatus() {
<b> return "The account contains $" + amount;</b>
}</pre>
</li>
<li>Введите следующее (полужирным шрифтом) для аннотации метода <tt>getStatus</tt>.
<pre class="examplecode"><b>@RolesAllowed({"USERS"})</b>
public String getStatus() {</pre>
<p>Эта аннотация означает, что только пользователям с ролью безопасности <tt>USERS</tt> доступен метод <tt>getStatus</tt>.</p>
</li>
<li>Щелкните правой кнопкой мыши в области редактора и выберите команду 'Исправить операторы импорта' (Alt-Shift-I; ⌘-Shift-I в Mac) и сохраните изменения. Убедитесь, что к файлу добавлено <tt>javax.annotation.security.RolesAllowed</tt>.</li>
</ol>
<h3><a name="ex3c"></a>Настройка дескрипторов развертывания</h3>
<p>Для приложений J2EE Java EE обычно не требуются файлы дескриптора развертывания, такие как <tt>ejb-jar.xml</tt>. Если развернуть узел &quot;Файлы настройки&quot; в Secure-ejb или безопасном приложении J2EE, можно увидеть, что дескрипторы развертывания отсутствуют. Аннотации можно использоваться для указания множества свойств, настроенных в <tt>ejb-jar.xml</tt>. В том примере были указаны роли безопасности для методов EJB, используя аннотации <tt>@RolesAllowed</tt> в сеансном компоненте.</p>
<p>Однако при настройке безопасности для приложения требуется указать некоторые свойства в дескрипторах развертывания. В этом примере необходимо сопоставить роли безопасности, используемые в приложении J2EE(<tt>USERS</tt>), с пользователями и группами, настроенными на серверами приложений. Была создана группа <tt>bank_users</tt> на сервере приложений, и необходимо сопоставить эту группу с ролью безопасности <tt>USERS</tt> в приложении J2EE. Для этого необходимо изменить дескриптор развертывания <tt>glassfish-application.xml</tt> для приложения J2EE.</p>
<p>Поскольку для запуска приложения J2EE не требуются дескрипторы развертывания, среда IDE не создала дескрипторы развертывания по умолчанию. Поэтому сначала необходимо создать файл дескриптора развертывания, затем отредактировать файл в редакторе с несколькими представлениями для настройки сопоставлений роли безопасности.</p>
<ol>
<li>Правой кнопкой мыши щелкните проект безопасного приложения J2EE и выберите &quot;Новый &gt; Другое&quot;, чтобы открыть мастер &quot;Создание файла&quot;.
<p>Также можно открыть мастер &quot;Создание файла&quot;, выбрав &quot;Файл &gt; Создание файла&quot; в главном меню. В этом случае необходимо выбрать проект &quot;Безопасность&quot; в раскрывающемся списке &quot;Проект&quot;.</p></li>
<li>Выберите тип файла &quot;Дескриптор GlassFish&quot; в категории GlassFish. Нажмите кнопку &quot;Далее&quot;.<br> <img alt="моментальный снимок мастера создания файлов" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/new-gf-descriptor.png" title="Тип файла дескриптора GlassFish в мастере создания файлов" />
</li>
<li>Примите значения по умолчанию в мастере и щелкните &quot;Готово&quot;.
<p>При нажатии кнопки &quot;Готово&quot; среда IDE создает файл <tt>glassfish-application.xml</tt> и открывает его в редакторе исходного кода с несколькими представлениями. <p>
<p>Если развернуть узел проекта приложения J2EE &quot;Безопасность&quot; в окне &quot;Проекты&quot;, можно увидеть, что файл дескриптора создан в узле &quot;Файлы настройки&quot;.</p>
<img alt="снимок редактора с несколькими представлениями дескриптора" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/glassfish-application-descriptor.png" title="Вкладка &apos;Безопасность&apos; в редакторе с несколькими представлениями " />
</li>
<li>На вкладке &quot;Безопасность&quot; редактора с несколькими представлениями щелкните &quot;Добавить сопоставление роли безопасности&quot; и введите <b>USERS</b> для параметра &quot;Имя роли безопасности&quot;.</li>
<li>Щелкните &quot;Добавить группу&quot; и введите <b>bank_users</b> для параметра &quot;Имя группы&quot; в диалоговом окне. Нажмите кнопку &quot;ОК&quot;.
<p>Теперь текст в редакторе должен быть схож со следующим.</p>
<img alt="снимок редактора с несколькими представлениями дескриптора" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/security-tab-descriptor.png" title="Вкладка &apos;Безопасность&apos; в редакторе с несколькими представлениями " />
</li>
<li>Сохраните изменения.</li>
</ol>
<p>Можно щелкнуть вкладку &quot;XML&quot; в редакторе с несколькими представлениями, чтобы просмотреть файл дескриптора развертывания в представлении XML. Теперь этот файл дескриптора развертывания содержит следующий текст:</p>
<pre class="examplecode">&lt;glassfish-application&gt;
&lt;security-role-mapping&gt;
&lt;role-name&gt;USERS&lt;/role-name&gt;
&lt;group-name&gt;bank_users&lt;/group-name&gt;
&lt;/security-role-mapping&gt;
&lt;/glassfish-application&gt;</pre>
<p>Теперь метод <tt>getStatus</tt> безопасен и доступен только пользователям в группе <tt>bank_users</tt>, указанной на сервере. </p>
<p>Теперь требуется способ проверки параметров безопасности. Проще всего создать базовый клиент приложения, запрашивающий у пользователя ввод имени пользователя и пароля.</p>
</div>
<a name="ex4"></a>
<h2>Создание клиента приложения</h2>
<p>В этом разделе будет создан простой клиент приложения для доступа к сеансному компоненту <tt>AccountStatus</tt>. Аннотация <tt>@EJB</tt> в коде будет использоваться для вызова базового элемента через удаленный интерфейс, а среда IDE автоматически добавит файл JAR библиотеки классов, содержащий интерфейс клиента приложения.</p>
<ol>
<li>Выберите Файл &gt; Создать проект и затем выберите &quot;Клиент корпоративного приложения&quot; в категории Java EE. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите SecureAppClient в качестве имени проекта. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите <strong>&lt;Нет&gt;</strong> в раскрывающемся списке &quot;Добавить в приложение J2EE&quot;.</li>
<li>Выберите 'GlassFish Server' в списке 'Сервер' и 'Java EE 6' или 'Java EE 7' в списке 'Версия Java EE'. Нажмите кнопку "Готово".
<p>После нажатии кнопки &quot;Готово&quot; в редакторе исходного кода откроется <tt>Main.java</tt>.</p></li>
<li>В редакторе исходного кода щелкните правой кнопкой мыши в файле <tt>Main.java</tt> и выберите 'Вставить код' (Alt-Insert; Ctrl-I в Mac) и выберите 'Call Enterprise Bean'.</li>
<li>В диалоговом окне &quot;Вызов компонента EJB&quot; разверните узел Secure-ejb и выберите AccountStatus. Нажмите кнопку &quot;ОК&quot;.<br> <img alt="моментальный снимок диалогового окна &apos;Вызвать компонент корпоративного уровня&apos;" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/call-enterprise-bean.png" title="интерфейс, выбранный в диалоговом окне &apos;Вызвать компонент корпоративного уровня&apos;" />
<p>Среда IDE добавляет следующий код к клиенту приложения для поиска сеансного компонента.</p>
<pre class="examplecode">@EJB
private static AccountStatusRemote accountStatus;</pre>
<p>Если развернуть узел &quot;Узел&quot; в окне &quot;Проекты&quot;, можно увидеть, что среда IDE добавила файл JAR SecureRemoteInterface к пути к классам проекта.</p>
</li>
<li>Измените метод <tt>main</tt>, чтобы добавить следующий код и сохранить изменения.
<pre class="examplecode">public static void main(String[] args) {
<b>System.out.println(accountStatus.getStatus());</b>
}</pre>
</li>
</ol>
<p class="tips">Дополнительные сведения о клиентах приложений приведены в разделе <a href="entappclient.html">Создание и запуск клиентов приложений на сервере GlassFish</a>.</p>
<h2><a name="ex5"></a>Выполнение приложения</h2>
<p>Теперь приложение готово. Сначала необходимо развернуть приложение J2EE на сервере. После развертывания приложения J2EE можно запустить клиент приложения для проверки безопасности метода в приложении J2EE и правильности сопоставления ролей пользователей. После запуска клиента приложения появится запрос на ввод имени пользователя и пароля для пользователя в группе <tt>bank_users</tt>.</p>
<ol>
<li>Правой кнопкой мыши щелкните узел проекта приложения J2EE &quot;Безопасность&quot; в окне &quot;Проекты&quot; и выберите &quot;Развернуть&quot;.
<p>При нажатии кнопки &quot;Развернуть&quot; среда IDE создает файл EAR, запускает сервер приложений (если он еще не запущен) и выполняет развертывание файла EAR на сервере.</p>
</li>
<li>Правой кнопкой мыши щелкните узел проекта SecureAppClient в окне &quot;Проект&quot; и выберите &quot;Выполнить&quot;. Появится диалоговое окно с запросом на ввод имени пользователя и пароля.<br /> <img alt="снимок окна &apos;Вход&apos;" class="margin-around box" src="../../../images_www/articles/72/javaee/secure-ejbs/login-window.png" title="Окно входа с запросом на ввод имени пользователя и пароля" />
<li>В диалоговом окне введите имя пользователя (<tt>manager</tt>) и пароль (<tt>password</tt>) и нажмите кнопку &quot;ОК&quot;. В окне вывода появится следующее.
<pre class="examplecode">The account contains 250$</pre></li>
</ol>
<p>Этот очень простой пример демонстрирует использование аннотаций Java для защиты метода в компоненте EJB.</p>
<div class="feedback-box">
<a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Building%20Secure%20Enterprise%20Beans">Отправить отзыв по этому учебному курсу</a>
</div>
<br style="clear:both;" />
<!-- ======================================================================================= -->
<h2><a name="nextsteps"></a>Дополнительные сведения</h2>
<p>Дополнительные сведения об использовании аннотаций и дескрипторов развертывания для защиты компонентов можно найти в следующих ресурсах:</p>
<ul>
<li>Главы <a href="http://docs.oracle.com/javaee/7/tutorial/doc/security-intro003.htm">Защита контейнеров</a> и <a href="http://docs.oracle.com/javaee/7/tutorial/doc/security-advanced008.htm">Настройка параметров безопасности с помощью дескрипторов развертывания</a> в разделе <a href="http://docs.oracle.com/javaee/7/tutorial/doc/partsecurity.htm">Безопасность</a> практического руководства по Java EE 7</li>
</ul>
<p>Дополнительные сведения об использовании IDE NetBeans для разработки приложений Java EE см. следующие ресурсы:</p>
<ul>
<li><a href="javaee-intro.html">Введение в технологию Java EE </a></li>
<li><a href="javaee-gettingstarted.html">Начало работы с приложениями Java EE</a></li>
<li><a href="../../trails/java-ee.html">Учебная карта по Java EE и Java Web</a></li>
</ul>
<p>Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans <a href="../../../community/lists/top.html">присоединяйтесь к списку рассылки nbj2ee</a>.</p>
</body>
</html>