Lecture14 (Лекции по Технологии программирования. Компонентный подход), страница 3

PDF-файл Lecture14 (Лекции по Технологии программирования. Компонентный подход), страница 3 Основы программной инженерии (40588): Лекции - 6 семестрLecture14 (Лекции по Технологии программирования. Компонентный подход) - PDF, страница 3 (40588) - СтудИзба2019-05-12СтудИзба

Описание файла

Файл "Lecture14" внутри архива находится в папке "Лекции по Технологии программирования. Компонентный подход". PDF-файл из архива "Лекции по Технологии программирования. Компонентный подход", который расположен в категории "". Всё это находится в предмете "основы программной инженерии" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 3 страницы из PDF

Для создания такого компонента нужно определитьтолько его класс. Обращения к компоненту организуются в виде посылки сообщений к объектуэтого класса как к реализующему интерфейс javax.jms.MessageListener. Вместе с этиминтерфейсом класс компонента EJB, управляемого сообщениями, обязан реализовыватьинтерфейс javax.ejb.MessageDrivenBean.Первый интерфейс требует определения метода void onMessage(javax.jms.Message),который разбирает содержимое пришедшего сообщения и определяет способ его обработки.Кроме того, нужно определить методы void ejbCreate() для создания компонента и voidejbRemove() для освобождения ресурсов при его удалении.Жизненный цикл компонента, управляемого сообщениями выглядит в целом так же, как ижизненный цикл сеансового компонента без состояния (Рис.

77). Вся необходимая информацияпередается такому компоненту в виде данных обрабатываемого им сообщения.Пример реализации класса компонента, управляемого сообщениями, приведен ниже. Данныйкомпонент получает идентификатор издателя, название и ISBN книги и добавляет такую книгу ккнигам, изданным данным издателем.package ru.msu.cmc.prtech.examples;importimportimportimportimportimportimportimportimportjavax.ejb.EJBException;javax.ejb.MessageDrivenBean;javax.ejb.MessageDrivenContext;javax.jms.MapMessage;javax.jms.Message;javax.jms.MessageListener;javax.naming.Context;javax.naming.InitialContext;javax.naming.NamingException;public class TransferProcessorBeanimplements MessageDrivenBean, MessageListener{Context context;public void setMessageDrivenContext (MessageDrivenContext mdc)throws EJBException{try { context = new InitialContext(); }catch (NamingException e) { throw new EJBException(e); }}public void ejbCreate() { }public void onMessage (Message msg){MapMessage message = (MapMessage)msg;try{Integer publisherPK = (Integer)message.getObject("Publisher");String title= (String)message.getObject("Title");String isbn= (String)message.getObject("ISBN");PublisherHomeRemote publisherHome =(PublisherHomeRemote)context.lookup("PublisherHomeRemote ");PublisherRemote publisher = publisherHome.findByPK(publisherPK);publisher.addBook(title, isbn);}catch (Exception e) { throw new EJBException(e); }}}public void ejbRemove () throws EJBException{try { context.close(); }catch (NamingException e) { }}Дескрипторы развертывания компонентов EJBПомимо декларации интерфейсов и классов компонентов, для построения EJB компонентанеобходимо написать дескриптор развертывания — XML файл в специальном формате,определяющий набор компонентов приложения и их основные свойства.Чаще всего дескрипторы развертывания не пишут вручную, их готовят с помощьюспециализированных инструментов для развертывания J2EE приложений или сред разработки(например, такими возможностями обладает среда NetBeans 4.0 [3]).

Здесь мы опишем толькочасть содержимого дескрипторов развертывания. Полное описание используемых в них тегов и ихназначения см. в [2].Дескриптор развертывания упаковывается вместе с байт-кодом классов компонентовприложения в JAR-архив. При развертывании такой архив помещают в выделенную директорию,в которой сервером J2EE ищет развертываемые приложения. После этого сервер сам осуществляетзапуск приложения и поиск кода компонентов, необходимых для обработки поступающихзапросов, на основании информации, предоставленной дескриптором.Заголовок дескриптора развертывания для набора EJB компонентов версии 2.1 выглядитследующим образом.<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans2.0//EN" http://java.sun.com/j2ee/dtds/ejb-jar_2_1.dtd">Дескриптор развертывания содержит следующие теги.•<ejb-jar>Обязательный элемент.Это корневой тег дескриптора развертывания набора EJB компонентов, содержащий всеостальные теги.•<enterprise-beans>Обязательный элемент, должен появиться внутри <ejb-jar> ровно один раз.Содержит набор описаний отдельных EJB компонентов в виде элементов <entity>,<session>, <message-driven>.•<entity> и <session>Эти теги вложены в тег <enterprise-beans> и служат для описания, соответственно,компонентов данных и сеансовых компонентов.

Они могут содержать следующиевложенные теги.o <ejb-name>Требуется ровно один.Задает имя компонента.o <home>Необязателен, начиная с EJB 2.0. В EJB 1.1 требуется ровно один.Указывает полное имя удаленного исходного интерфейса.o <remote>Необязателен, начиная с EJB 2.0. В EJB 1.1 требуется ровно один.Указывает полное имя удаленного интерфейса.o <local-home>Необязателен.Указывает полное имя локального исходного интерфейса.o <local>Необязателен.Указывает полное имя локального интерфейса.o <ejb-class>Требуется ровно один.Указывает полное имя класса компонента.o <primkey-field>Необязателен, используется в описании компонентов данных.Указывает имя поля, являющегося первичным ключом (если он состоит только изодного поля и синхронизацией компонента с базой данных управляет контейнер).o <prim-key-class>Требуется ровно один, используется в описании компонентов данных.Указывает имя класса первичного ключа.

Можно отложить точное определение классапервичного ключа до развертывания, тогда в этом поле указывается java.lang.Object.o <persistence-type>Требуется ровно один, используется в описании компонентов данных.Имеет значения Bean или Container, в зависимости от того, управляется лисинхронизация компонента с базой данных самим компонентом или контейнером.o <cmp-version>Необязателен.Указывает версию спецификаций EJB, в соответствии с которой разработан компонент,что определяет способ управления этим компонентом. Может иметь значения 2.x и 1.x.o <abstract-schema-name>Необязателен.Задает уникальный идентификатор компонента для использования в запросах на языкеEJB QL, который используется для описания запросов к схеме данных при реализациикомпонента данных, самостоятельно управляющего связью с СУБД.o <cmp-field>Один или более, используется в описании компонентов данных.Каждый такой элемент описывает одно поле данных, синхронизация которого с СУБДуправляется EJB контейнером.

Он может содержать тег <description> с описаниемполя и должен содержать тег <field-name> с именем поля. В EJB 2.0 это имя совпадаетс именем абстрактного свойства (для которого в классе компонента декларированыметоды getName() и setName()), а в EJB 1.1 — с именем одного из полей классакомпонента.o<security-role-ref>Один или более, необязателен.Указывает роли, используемые данным компонентом. Они при работе приложенияслужат для авторизации доступа — сопоставляются с ролями, которым разрешен доступк тому или иному методу.Может содержать тег <description> (необязателен) и теги <role-name> (обязателен),<role-link> (необязателен, служит для сопоставления указанного имени роли слогической ролью, описанной в <security-role> раздела <assembly-descriptor>).o<security-identity>Необязателен.Определяет, какую логическую роль будет играть данный компонент при обращениях кдругим компонентам.

Для этого может быть использован вложенный тег <runas><role-name>…</role-name></run-as> для указания имени конкретной логическойроли, или <use-caller-identity/> для указания того, что нужно использовать рольвызывающего клиента.o<session-type>Требуется ровно один, используется в описании сеансовых компонентов.Имеет значения Stateful или Stateless, в зависимости от того, использует ли данныйкомпонент состояние сеанса.o<transaction-type>Требуется ровно один, используется в описании сеансовых компонентов.Имеет значения Container или Bean, в зависимости от того, управляет ли транзакциямиданного компонента контейнер или он сам. В первом случае соответствующиетранзакции должны быть описаны в разделе <assembly-descriptor>, см.

далее.o<query>Один или более, необязателен.Используется для описания запросов, с чьей помощью реализуются некоторые методыкомпонентов данных, которые сами управляют связью с базой данных. Запросыописываются на языке EJB QL [X] и привязываются к методам компонента с помощьютегов <query-method>. Сам код запроса описывается внутри элемента CDATA вовложенном теге <ejb-ql>.Например<query><query-method><method-name>findByName</method-name><method-params><method-param>java.lang.String</method-param></method-params></query-method><ejb-ql><!CDATA[SELECT OBJECT(c) FROM Client c WHERE c.name = ?1]]</ejb-ql></query>•<relationships>Необязателен.

Вложен в <ejb-jar>.Описывает набор отношений между компонентами, которые соответствуют связям в схемебазы данных и автоматически поддерживаются контейнером. Каждое отношениеописывается с помощью вложенного тега <ejb-relation>.o <ejb-relation>Описывает одно отношение и может иметь следующие элементы.ƒ <ejb-relation-name>Необязателен, только один.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5301
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее