Главная » Java, JavaBeans » Поставка Компонентов EJB: первые шаги

0

Поставка Компонентов EJB в общем случае требует выполнения

следующих шагов:

1                Создание файла Дескриптора Поставки в XML-формате, совместимого со спецификацией Sun EJB 1.1.

2                Если необходимо, редактирование свойств среды, которые потребуются во время исполнения.

3                Создание EJB jar-файла, содержащего Дескриптор Поставки и все классы, необходимые для работы EJB (класс Компонента, remote- интерфейс, home-интерфейс, стабы и скелеты, класс главного ключа в случае Entity-Компонента и другие связанные с ними классы). Вы можете сделать это с помощью стандартной утилиты Java jar.

4                Поставка вашего Компонента в Контейнер EJB – либо с помощью Консоли Inprise Application Server, либо с помощью командной строки.

Создание файла Дескриптора Поставки

Для создания или изменения Дескриптора Поставки вы можете использовать Редактор Дескриптора Поставки, входящий в состав Inprise Application Server, или любой другой XML-редактор. Если вы используете стандартный XML-редактор, вы должны быть уверены, что ваши действия удовлетворяют всем требованиям спецификации EJB 1.1. Для того, чтобы ваш Компонент мог содержаться в Контейнере EJB, вы должны создать специальный файл, который называется ejb-inprise.xml.

Редактор Дескриптора Поставки Inprise Application Server создает Дескриптор Поставки, который соответствует следующим требованиям спецификации EJB 1.1:

•                 Он имеет XML-формат.

•                 Он соответствует DTD, объявленному в спецификации EJB 1.1.

•          Он соответствует всем семантическим правилам DTD. Вы не должны выучить эти правила, редактор обеспечивает это самостоятельно.

•                 Он ссылается на DTD, используя следующий оператор:

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems Inc.//DTD Enterprise JavaBeans 1.2//EN" "http://java.sun.com/j2ee/dtds/ejb-jar 1 2.dtd"> Мы настоятельно рекомендуем использовать Редактор Дескриптора Поставки Inprise Application Server по следующим причинам:

•          Он автоматически создает XML-файл Дескриптора Поставки, и от вас не требуется знание XML.

•          Он соответствует семантике Sun DTD. Вы не обязаны знать эти правила, редактор использует их самостоятельно по мере ввода вами данных.

•          Он автоматически добавляет в отдельный файл некоторые расширения, специфические для Inprise-реализации.

•          По мере ввода вами информации он позволяет вам знать, какие данные являются обязательными.

Для получения более подробной информации о редакторе Дескриптора Поставки обратитесь к документу "Руководство Пользователя Inprise Application Served. В этой секции показаны фрагменты содержимого Дескриптора Поставки. Если вы хотите ознакомиться с примером полного Дескриптора Поставки, обратитесь к каталогу примеров, расположенному в каталоге инсталляций. Вам нужен подкаталог, который называется "META-INF":

[install directory]/examples/bank/META-INF/ejb-jar.xml

Для просмотра содержимого специфических для Inprise-реализации расширений, см.

[install directory]/examples/bank/META-INF/ejb-inprise.xml

Роль Дескриптора Поставки

Дескриптор Поставки служит для предоставления информации о каждом Компоненте EJB, который помещен в конкретный EJB jar-файл. Он предназначен для того, чтобы с ним работал пользователь EJB jar- файла. Создание Дескриптор Поставки – задача разработчика Компонента. Поставщик (Deployer) может изменять некоторые из атрибутов в процессе поставки. Вы также можете изменять Дескриптор Поставки после того, как он установлен в Контейнере.

Информация, находящаяся в Дескрипторе Поставки, используется для задания значений атрибутов Компонентов EJB. Эти атрибуты определяют поведение Компонента при его взаимодействии с конкретной средой исполнения. Например, когда Вы устанавливаете атрибуты транзакции Компонента, они определяют каким образом Компонент работает в контексте транзакции – и вообще, участвует ли он в транзакции. Дескриптор Поставки содержит следующую информацию:

•          Информацию о типах – другими словами, имена классов – для home и remote интерфейсов и класса реализации.

•          JNDI-имена, включая имя, под которым зарегистрирован home- интерфейс.

•          Поля, сохранением значений которых управляет Контейнер.

•          Профили транзакций, которые определяют поведение Компонента при выполнении транзакции.

•          Атрибуты безопасности, которые определяют права доступа к Компоненту.

•          Информация, специфическая для Inprise-реализации, такая, как информация об источнике данных.

Типы информации в Дескрипторе Поставки

Информация о структуре

Разработчик Компонента EJB должен для каждого Компонента в файле ejb-jar определить структурную информацию для каждого Компонента. Часть этой информации является обязательной для всех Компонентов, другие части могут относиться только к session -Компонентам, entity- Компонентам или только к entity-Компонентам с СМР.

Для любых Компонентов должны быть заданы:

•      Имя Компонента

•      Класс Компонента

•      Ноте-интерфейс Компонента

•      Remote-интерфейс Компонента

•      Тип Компонента

•      Параметры среды

•      Ссылки на фабрики ресурсов (если используются источники данных)

•      Ссылки на другие Компоненты (если это необходимо)

•      Ссылки на Роли безопасности

Для каждого session-Компонента EJB должны быть определены:

•      Тип сохранения состояния Компонента

•      Тип задания границ транзакций

Для каждого entity-Компонента EJB должны быть определены:

•      Тип управления сохранением (persistence)

•      Класс главного ключа Компонента

Для каждого session-Компонента EJB с СМР должны быть определены:

•      Поля, управляемые Контейнером

Информация для сборки Приложений

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

•      Разрешение внешних ссылок Компонента

•      Роли безопасности

•      Права доступа к методам

•      Привязки ссылок на роли безопасности

•      Атрибуты транзакций

При выполнении процесса сборки Приложения или его поставки вы можете изменять следующую структурную информацию:

•      Значение параметров среды. Сборщик Приложений (Application Assembler) может изменить значения существующих и/или добавить новые значения параметров.

•      Поля описаний. Сборщик Приложений может изменить существующие либо создать новые элементы описаний.

Вы не можете изменить любые другие виды структурной информации; тем не менее, вы можете изменить любую информацию, относящуюся к сборке приложений, на стадии поставки.

Для получения подробного описания содержимого Дескриптора Поставки и его семантики обращайтесь к спецификации Sun EJB 1.1.

Подробное описание работы с редактором Дескриптора Поставки находится в документе "Руководство пользователя Inprise Application Served.

Безопасность

Разработчик – обычно Сборщик Приложений – определяет следующую информацию в Дескрипторе Поставки:

•      Роли безопасности

•      Права доступа к методам

•      Связи между ссылками на роли безопасности и самими ролями

Роли безопасности

При работе с Дескриптором Поставки, Разработчик может определить одну или несколько ролей безопасности. Это задает рекомендуемые роли безопасности для клиента Компонента.

Права доступа к методу

Эти элементы Дескриптора Поставки позволяют Разработчику определить права доступа к методам Компонента. С методами remote- и Ьоте-интерфейсов Компонентов EJB могут быть сопоставлены те или иные роли безопасности.

Связи между ссылками на роли безопасности и самими ролями

Если определены роли безопасности, то разработчик должен определить связи между ними и ссылками на них; для этого используются специальные элементы Дескриптора Поставки.

Специфическая для Inprise-реализации информация, необходимая для поставки Компонента

Элементы, специфические для Inprise-реализации, находятся в файле с именем ejb-inprise.xml. Этот файл расположен в том же каталоге, что и файл ejb-jar.xml. В этот файл вы можете поместить следующую информацию:

•      bean-home-name

•       значение тайм-аута для stateful session-Компонента

•       информация об источниках данных

•       информация о СМР

•       отображение JNDI-имен, используемых для Компонента EJB, на реальные имена

Файл содержит два главных раздела:

•      <enterprise-beans>

•      <datasource-definitions>

Ниже приведен DTD файла расширений Inprise.

<!ELEMENT inprise-specific (enterprise-beans, datasource- definitions?)> <!ELEMENT enterprise-beans (session|entity)+> <!ELEMENT session (ejb-name, bean-home-name,

timeout?, ejb-ref*, resource-ref*, property*)> <!ELEMENT entity (ejb-name, bean-home-name,

ejb-ref*, resource-ref*, cmp-info?, property*)> <!ELEMENT ejb-ref (ejb-ref-name, jndi-name)>

<!ELEMENT resource-ref (res-ref-name, jndi-name, cmp-resource?)>

<!ELEMENT datasource-definitions (datasource*)>

<!ELEMENT datasource (jndi-name, url, username?, password?,

isolation-level?, driver-class-name?, jdbc-property*, property*)>

<!ELEMENT jdbc-property (prop-name, prop-value)>

<!ELEMENT property (prop-name, prop-type, prop-value)>

<!ELEMENT cmp-info (description?, database-map?, finder*)>

<!ELEMENT database-map (table, column-map*)>

<!ELEMENT finder (method-signature, where-clause, load-state?)>

<!ELEMENT column-map (field-name, column-name, ejb-ref-name?)>

<!ELEMENT cmp-resource (#PCDATA)>

<!ELEMENT method-signature (#PCDATA)>

<!ELEMENT where-clause (#PCDATA)>

<!ELEMENT load (#PCDATA)>

<!ELEMENT prop-name (#PCDATA)>

ELEMENT prop-type (#PCDATA)>

ELEMENT

prop-value (#PCDATA)>

ELEMENT

field-name (#PCDATA)>

ELEMENT

column-name (#PCDATA)>

ELEMENT

table (tPCDATA)>

ELEMENT

description (#PCDATA)>

ELEMENT

ejb-name (#PCDATA)>

ELEMENT

bean-home-name (#PCDATA)>

ELEMENT

timeout (#PCDATA)>

ELEMENT

ejb-ref-name (#PCDATA)>

ELEMENT

jndi-name (#PCDATA)>

ELEMENT

res-ref-name (#PCDATA)>

ELEMENT

url (tPCDATA)>

ELEMENT

username (#PCDATA)>

ELEMENT

password (tPCDATA)>

ELEMENT

isolation-level (#PCDATA)>

ELEMENT

driver-class-name (#PCDATA)>

Некоторые из этих элементов являются обязательными, некоторые – нет.

Вы должны создать соответствующую session- или entity-секцию для каждого Компонента EJB, который вы планируете поместить в jar-файл EJB. Например, если вы создали пять session-Компонентов, вы должны создать пять session-секций в файле ejb-inprise.xml.

Источник: Руководство программиста Enterprise JavaBeans

По теме:

  • Комментарии