§ <relationship-role-source>
Определяет имя компонента, экземпляры которого играют данную роль в этом отношении. Внутри тега <ejb-name> задается имя, которое присвоено компоненту в рамках данного дескриптора.

§ <cmr-field>
Определяет имя поля, хранящего ссылки, поддерживающие данное отношение — оно задается в теге <cmr-field-name> и для него в класе компонента должно быть определено абстрактное свойство с тем же именем.

· Раздел <assembly-descriptor>
Этот раздел содержит дополнительные указания для сборки компонентов, в частности следующие.

o <container-transaction>
Возможно несколько, необязателен.
Содержит необязательный элемент <description>, а также приведенные ниже.
Для компонента данных должно быть по одному такому элементу на каждый метод удаленных интерфейсов. Сеансовые компоненты, транзакциями которых управляет контейнер, также должны подчиняться этому правилу.

§ <method>
Возможно несколько.
Содержит теги <ejb-name>, указывающий имя компонента, и <method-name>, указывающий имя метода или знак *, который обозначает применение указанного атрибута ко всем методам.
Может также включать элементы <description>, <method-params> и <method-intf>, который может иметь значения Remote, Home, Local, Local-Home, в зависимости от того, в каком интерфейсе этот метод декларирован — для поддержки возможности декларировать методы с одним именем и набором параметром в разных интерфейсах.

§ <trans-attribute>
Ровно один.
Определяет атрибут транзакции, управляющий политикой включения в транзакции или создания новых.
Для компонентов данных атрибуты транзакции должны быть определены для всех методов удаленного интерфейса и методов декларированных во внешнем интерфейсе, для сеансовых компонентов — для всех методов удаленных интерфейсов.
Может иметь следующие значения.

· NotSupported
Означает, что транзакции не распространяется на данный метод. Если он вызывается из транзакции, она приостанавливается до окончания его работы.

· Supports
Такой метод продолжает существующую транзакцию и не создает новой, если был вызван вне транзакции.

· Required
Такой метод продолжает существующую транзакцию и создает новую, если был вызван вне транзакции.

· RequiresNew
Такой метод при любых обстоятельствах создает новую транзакцию, в рамках которой проходит вся его работа.

· Mandatory
Такой метод всегда должен вызывться из транзакции. Если он вызван вне транзакции, создается исключение.

· Never
Такой метод всегда должен вызываться вне транзакции. Он создает исключение, будучи вызван в контексте транзакции.

o <security-role>
Возможно несколько, необязателен.
Определяет роли безопасности, служащих для контроля доступа к методам компонентов.
В каждом таком элементе могут содержаться теги <description> (необязателен) и <role-name> (обязателен, он и определяет имя роли).

o <method-permission>
Возможно несколько, необязателен.
Указывает правила доступа ролей, определенных в тегах <security-role>, к методам компонентов.
Содержит необязательный тег <description> , несколько или один тег <role-name> и несколько или один тег <method>, кроме того, может присутствовать тег <unchecked/>, который обозначает отсутствие проверки прав доступа во время работы, даже если они описаны.
Каждый тег <method> содержит тег <ejb-name>, указывающий имя компонента, и <method-name>, указывающий имя метода или знак *, который обозначает применение указанного атрибута ко всем методам.

o <exclude-list>
Необязателен.
Содержит один или несколько тегов <method>, определяющих методы, которые не должны вызываться при работе приложения. Каждый вызов такого метода создает исключительную ситуацию.

Пример дескриптора развертывания для описанных ранее компонентов данных приведен ниже.

НЕ нашли? Не то? Что вы ищете?

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans

2.0//EN" http://java. /j2ee/dtds/ejb-jar_2_0.dtd">

<ejb-jar>

<enterprise-beans>

<entity>

<ejb-name>OrganizationEJB</ejb-name>

<home>ru. msu. cmc. prtech. examples. ejb. OrganizationHomeRemote</home>

<remote>ru. msu. cmc. prtech. examples. ejb. OrganizationRemote</remote>

<local>ru. msu. cmc. prtech. examples. ejb. OrganizationLocal</local>

<ejb-class>ru. msu. cmc. prtech. examples. ejb. OrganizationEJB</ejb-class>

<primkey-field>id</primkey-field>

<prim-key-class>java. lang. Integer</prim-key-class>

<persistence-type>Container</persistence-type>

<reenterant>false</reenterant>

<cmp-field>

<field-name>id</field-name>

</cmp-field>

<cmp-field>

<field-name>name</field-name>

</cmp-field>

</entity>

<entity>

<ejb-name>ClientEJB</ejb-name>

<home>ru. msu. cmc. prtech. examples. ejb. ClientHomeRemote</home>

<remote>ru. msu. cmc. prtech. examples. ejb. ClientRemote</remote>

<local-home>ru. msu. cmc. prtech. examples. ejb. ClientHomeLocal</local-home>

<local>ru. msu. cmc. prtech. examples. ejb. ClientLocal</local>

<ejb-class>ru. msu. cmc. prtech. examples. ejb. ClientEJB</ejb-class>

<primkey-field>id</primkey-field>

<prim-key-class>java. lang. Integer</prim-key-class>

<persistence-type>Container</persistence-type>

<reenterant>false</reenterant>

<cmp-field>

<field-name>id</field-name>

</cmp-field>

<cmp-field>

<field-name>firstName</field-name>

</cmp-field>

<cmp-field>

<field-name>lastName</field-name>

</cmp-field>

</entity>

<entity>

<ejb-name>AccountEJB</ejb-name>

<home>ru. msu. cmc. prtech. examples. ejb. AccountHomeRemote</home>

<remote>ru. msu. cmc. prtech. examples. ejb. AccountRemote</remote>

<local-home>ru. msu. cmc. prtech. examples. ejb. AccountHomeLocal

</local-home>

<local>ru. msu. cmc. prtech. examples. ejb. AccountLocal</local>

<ejb-class>ru. msu. cmc. prtech. examples. ejb. AccountEJB</ejb-class>

<primkey-field>id</primkey-field>

<prim-key-class>java. lang. Integer</prim-key-class>

<persistence-type>Container</persistence-type>

<reenterant>false</reenterant>

<cmp-field>

<field-name>id</field-name>

</cmp-field>

<cmp-field>

<field-name>balance</field-name>

</cmp-field>

<cmp-field>

<field-name>credit</field-name>

</cmp-field>

<cmp-field>

<field-name>status</field-name>

</cmp-field>

</entity>

</enterprise-beans>

<relationships>

<ejb-relation>

<ejb-relation-name>Client-Organization</ejb-relation-name>

<eib-relationship-role>

<eib-relationship-role-name>Organization-has-Clients

</eib-relationship-role-name>

<multiplicity>One</multiplicity>

<relationship-role-source>

<ejb-name>OrganizationEJB</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>clients</cmr-field-name>

</cmr-field>

</eib-relationship-role>

<eib-relationship-role>

<eib-relationship-role-name>Client-belongs-to-an-Organization

</eib-relationship-role-name>

<multiplicity>Many</multiplicity>

<relationship-role-source>

<ejb-name>ClientEJB</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>organization</cmr-field-name>

</cmr-field>

</eib-relationship-role>

</ejb-relation>

<ejb-relation>

<ejb-relation-name>Client-Account</ejb-relation-name>

<eib-relationship-role>

<eib-relationship-role-name>Client-has-Accounts

</eib-relationship-role-name>

<multiplicity>One</multiplicity>

<relationship-role-source>

<ejb-name>ClientEJB</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>accounts</cmr-field-name>

</cmr-field>

</eib-relationship-role>

<eib-relationship-role>

<eib-relationship-role-name>Account-belongs-to-a-Client

</eib-relationship-role-name>

<multiplicity>Many</multiplicity>

<relationship-role-source>

<ejb-name>AccountEJB</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>client</cmr-field-name>

</cmr-field>

</eib-relationship-role>

</ejb-relation>

</relationships>

<assembly-descriptor>

<container-transaction>

<method>

<ejb-name>OrganizationEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

<container-transaction>

<method>

<ejb-name>ClientEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

<container-transaction>

<method>

<ejb-name>AccountEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

<security-role>

<role-name>administrator</role-name>

</security-role>

<security-role>

<role-name>user</role-name>

</security-role>

<method-permission>

<role-name>administrator</role-name>

<method>

<ejb-name>OrganizationEJB</ejb-name>

<method-name>*</method-name>

</method>

<method>

<ejb-name>ClientEJB</ejb-name>

<method-name>*</method-name>

</method>

<method>

<ejb-name>AccountEJB</ejb-name>

<method-name>*</method-name>

</method>

</method-permission>

<method-permission>

<role-name>user</role-name>

<method>

<ejb-name>OrganizationEJB</ejb-name>

<method-name>getName</method-name>

</method>

<method>

<ejb-name>OrganizationEJB</ejb-name>

<method-name>getClients</method-name>

</method>

<method>

<ejb-name>ClientEJB</ejb-name>

<method-name>*</method-name>

</method>

<method>

<ejb-name>AccountEJB</ejb-name>

<method-name>*</method-name>

</method>

</method-permission>

</assembly-descriptor>

</ejb-jar>

[1] Э. Таненбаум, М. ван Стеен. Распределенные системы. Принципы и парадигмы. СПб, Питер, 2003.

[2] http://java.sun.com/j2ee/1.4/docs/index.html
Документация по платформе J2EE

[3] РМонсон-Хейфел. Enterprise JavaBeans. СПб., Символ-Плюс, 2002.

[4] П. Аллен, Дж. Бамбара, М. Ашнаульт, Зияд Дин, Т. Гарбен, Ш. Смит. J2EE. Разработка бизнес-приложений. ДиаСофт, 2002.

[5] B. A. Tate, J. Gehtland. Better, Faster, Lighter Java. O’Reilly, 2004.

[6] http://java. /j2se/1.5.0/docs/index. html
Документация по платформе J2SE

[7] Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Питер-ДМК, 2001.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6