Инфоурок Информатика ПрезентацииEJB in Java. Part 1. (for students)

EJB in Java. Part 1. (for students)

Скачать материал
Скачать материал

Описание презентации по отдельным слайдам:

  • Enterprise Java             BeansFor students of universities
Author: Oxana D...

    1 слайд

    Enterprise Java Beans
    For students of universities
    Author: Oxana Dunik

  • Технологию EJB (Enterprise Java Beans)можно рассматривать с двух точек зрения...

    2 слайд

    Технологию EJB (Enterprise Java Beans)
    можно рассматривать с двух точек зрения: как фреймворк, и как компонент.
    С точки зрения компонента EJB - это всего-лишь надстройка над POJO-классом, описываемая с помощью аннотации(
    POJO это просто класс Java, который:
    1. Содержит только поля, без логики их обработки;
    2. Доступ ко все полям только через get/set ).
    Существует три типа компонентов EJB:

    session beans - используется для описания бизнесс-логики приложения
    message-driven beans - так же используется для бизнесс-логики
    entities - используется для хранения данных
    С точки зрения фреймворка EJB - это технология, предоставляющая множество готовых решений (управление транзакциями, безопасность, хранение информации и т.п.) для вашего приложения.

  • Основные архитектуры EJB Существует 2 основные архитектуры при разработке ent...

    3 слайд

    Основные архитектуры EJB
    Существует 2 основные архитектуры при разработке enterprise-приложений:

    традиционная слоистая архитектура (traditional layered architecture)
    domain-driven design (DDD)

  • традиционная слоистая архитектура (traditional layered architecture) EJB 4 ба...

    4 слайд

    традиционная слоистая архитектура (traditional layered architecture) EJB
    4 базовых слоя: слой презентации, слой бизнесс-логики, слой хранения данных и непосредственно слой самой базы данных.
    Обычно слой презентации реализуется через web-приложение (т.е. используя JSP, JSF, GWT и т.п.) или web-сервис.
    Слой бизнесс-логики является основой для enterprise-приложения. В нем описываются бизнесс-процессы, производится поиск, авторизация и множество других вещей. Слой бизнесс-логики использует механизмы слоя хранения данных.
    Чем отличается слой хранения данных и слой базы данных? Тем, что в первом описываются высокоуровневые объектно-ориентированные механизмы для работы с сущностями БД, в то время как второй - это и есть непосредственно база данных (Oracle, MySQL и т.п.)

  • domain-driven design (DDD) Архитектура DDD предпологает, что объекты обладают...

    5 слайд

    domain-driven design (DDD)
    Архитектура DDD предпологает, что объекты обладают бизнесс-логикой, а не являются простой репликацией объектов БД. Многие программисты не любят наделять объекты логикой и создают отдельный слой, называемый service layer или application layer. Он похож на слой бизнесс-логики традиционной слоистой архитектуры за тем лишь отличием, что он намного тоньще.

  • 6 слайд

  • 7 слайд

  • Сервер приложений j2ee состоит из двух основных элементов: контейнер web-прил...

    8 слайд

    Сервер приложений j2ee состоит из двух основных элементов: контейнер web-приложения (JSP, JSF и т.д.) и EJB-контейнер. Первый служит для создания пользовательского интерфейса и слабо подходит для описания бизнес-логики приложения. Для этого используется вторая часть J2EE - EJB.

  • 9 слайд

  • 10 слайд

  • Session bean Session bean представляет собой EJB-компоненту, связанную с одни...

    11 слайд

    Session bean
    Session bean представляет собой EJB-компоненту, связанную с одним клиентом. ``Бины'' этого типа, как правило, имеют ограниченный срок жизни (хотя это и не обязательно), и редко участвуют в транзакциях. В частности, они обычно не восстанавливаются после сбоя сервера. В качестве примера session bean можно взять ``бин'', который живет в веб-сервере и динамически создает HTML-страницы клиенту, при этом следя за тем, какая именно страница загружена у клиента. Когда же пользователь покидает вэб-узел, или по истечении некоторого времени, session bean уничтожается. Несмотря на то, что в процессе своей работы, session bean мог сохранять некоторую информацию в базе данных, его предназачение заключается все-таки не в отображении состояния или в работе с ``вечными объектами'', а просто в выполнении некоторых функций на стороне сервера от имени одного клиента.

  • Session beanВ качестве session bean может выступать обычный класс Java удовле...

    12 слайд

    Session bean
    В качестве session bean может выступать обычный класс Java удовлетворяющий следующим условиям:

    иметь как минимум один метод
    не должен быть абстрактным
    иметь конструктор по-умолчанию
    методы не должны начинаться с "ejb" (например ejbCreate, ejbDoSomething)
    Для stateful-бинов существует еще одно условие: свойства класса должны быть объявлены примитивами или реализовывать интерфейс Serializable.

  • Особенности stateless и stateful биновОдин bean может содержать множество кл...

    13 слайд

    Особенности stateless и stateful бинов

    Один bean может содержать множество клиентских методов. Этот момент является важным для производительности, так как контейнер помещает экземпляры stateless-бинов в общее хранилище и множество клиентов могут использовать один экземпляр бина.
    В отличии от stateless stateful бины инстанцируются для каждого пользователя отдельно.

  • Entity bean Entity bean, наоборот, представляет собой компоненту, работающую...

    14 слайд

    Entity bean
    Entity bean, наоборот, представляет собой компоненту, работающую с постоянной (persistent) информацией, хранящейся, например, в базе данных. Entity beans ассоциируются с элементами баз данных и могут быть доступны одновременно нескольким пользователям. Так как информация в базе данных является постоянной, то и entity beans живут постоянно, ``выживая'', тем самым, после сбоев сервера (когда сервер восстанавливается после сбоя, он может восстановить ``бин'' из базы данных).

  • 15 слайд

  • EJB-компонента (The Enterprise JavaBeans component)
Отдельная EJB-компонента...

    16 слайд

    EJB-компонента (The Enterprise JavaBeans component)

    Отдельная EJB-компонента представляет цобой компоненту в том же смысле что и традиоционный JavaBeans ``bean'' (``зерно''). Компоненты EJB выполняются внутри EJB-контейнера, который, в свою очередь, выполняется внутри EJB-сервера. Любой сервер, который в состоянии поддерживать EJB-контейнеры и предоставлять им необходимые сервисы, может быть EJB-сервером (то есть многие из существующих серверов могут быть просто расширены до поддержки Enterprise JavaBeans).
    EJB-компонента представляет из себя Java-класс, который реализует некоторую бизнес-логику. Все остальные классы в EJB-системе либо реализуют поддержку клиент/сервер взаимодйествий между компонентами, либо реализуют некоторые сервисы для компонент.

  • EJB-контейнер (The Enterprise JavaBeans container) EJB-контейнер -- это то ме...

    17 слайд

    EJB-контейнер (The Enterprise JavaBeans container)
    EJB-контейнер -- это то место, где ``живет'' EJB-компонент. EJB-контейнер реализует для находящихся в нем компонент такие сервисы как транзакции (transaction), управление ресурсами, управление версиями компонент, их мобильностью, настраиваемостью, мобильностью, жизненным циклом. Так как EJB-контейнер реализует все эти функции, то разработчик EJB-компонент может не реализовывать их самостоятельно, а просто вызывать соответсвующие методы у контейнера (правила вызова методов у контейнера описываются в спецификации). Как правило, в одном EJB-контейнере живет несколько однотипных EJB-компонент.

  • EJB-объект (EJB-object) и удаленный интерфейс (remote interface) Клиентские п...

    18 слайд

    EJB-объект (EJB-object) и удаленный интерфейс (remote interface)
    Клиентские приложения вызывают методы на удаленных EJB-компонентах через EJB-объект (EJB-object). EJB-объект реализует ``удаленный интерфейс'' EJB-компоненты на сервере. Суть в том, что находящаяся на сервере EJB-компонента, помимо бизнес-функций, ради которых она была разработана, должна реализовывать также некоторые функции, определяемые спецификацией, которые служат для ``управления'' EJB-компонентой со стороны контейнера. EJB-объект реализует лишь бизнес-интерфейс для EJB-компоненты, являясь, в некотором смысле, ``промежуточным'' звеном между клиентом и EJB-компонентой.

  • EJB-компонента выполняется на сервере, внутри EJB-контейнера и реализует бизн...

    19 слайд

    EJB-компонента выполняется на сервере, внутри EJB-контейнера и реализует бизнес-логику, в то время как EJB-объект выполняется у клиента и удаленно вызывает методы у EJB-компоненты.

  • 20 слайд

  • Итак, приложение-клиент соединяется с EJB-сервером и посылает ему запрос на с...

    21 слайд

    Итак, приложение-клиент соединяется с EJB-сервером и посылает ему запрос на создание ``бина'' (Enterprise JavaBean) для обработки своих запросов. Сервер отвечает на такой запрос созданием объекта на стороне сервера (экземпляр EJB-компоненты) и возвращает клиенту прокси-объект (EJB-объект), чей итерфейс совпадает с интерфейсом созданной EJB-компоненты и чьи методы перенаправляют вызовы собственно экземпляру компоненты. После этого приложение-клиент работает с EJB-объектом как с локальным объектом, даже и не подозревая, что всю работу выполняет не EJB-объект, а удаленная компонента на сервере. Необходимо заметить, что созданием и удалением EJB-компонент на сервере занимается EJB-контейнер.

  • 22 слайд

  • POJO, POJI, annotationsТеперь рассмотрим реализацию этих сущностей. В EJB3 м...

    23 слайд

    POJO, POJI,
    annotations
    Теперь рассмотрим реализацию этих сущностей. В EJB3 мы используем POJO (Plain Old Java Objects), POJI (Plain Old Java Interfaces) и аннотации.
    Аннотация записывается так:
    @<имя аннотации>(<список парамет-значение>)

  • Какие аннотации могут быть?
Stateless - говорит контейнеру, что класс будет...

    24 слайд

    Какие аннотации могут быть?

    Stateless - говорит контейнеру, что класс будет stateless session bean. Для него контейнер обеспечит безопасность потоков и менеджмент транзакций. Дополнительно, вы можете добавить другие свойства, например прозрачное управление безопасностью и перехватчики событий;
    Local - относится к интерфейсу и говорит, что bean реализующий интерфейс доступен локально
    Remote - относится к интерфейсу и говорит, что bean доступен через RMI (Remote Method Invocation)
    EJB - применятеся в коде, где мы используем bean.
    Stateful - говорит контейнеру, что класс будет stateful session bean.
    Remove - опциональная аннотация, которая используется с stateful бинами. Метод, помеченный как Remove говорит контейнеру, что после его исполнения нет больше смысла хранить bean, т.е. его состояние сбрасывается. Это бывает критично для производительности.
    Entity - говорит контейнеру, что класс будет сущностью БД
    Table(name="...") - указывает таблицу для маппинга
    Id, Column - параметры маппинга
    WebService - говорит, что интерфейс или класс будет представлять вэб-сервис.
    и много-много других...

  • 25 слайд

  • POJO, POJI, annotationsУ stateless и MDB бинов существует 2 события жизненно...

    26 слайд

    POJO, POJI,
    annotations
    У stateless и MDB бинов существует 2 события жизненного цикла, которые мы можем перехватить: создание и удаление бина. Метод, который будет вызываться сразу после создании бина помечается аннотацией javax.annotation.PostConstruct, а перед его удалением - javax.annotation.PreDestroy. Stateful бины обладают помимо рассмотреных выше еще 2 событиями: при активации (javax.ejb.PostActivate) и при деактивации (javax.ejb.PrePassivate).

  • import javax.ejb.Local;@Localpublic interface BookTestBeanLocal {   publi...

    27 слайд

    import javax.ejb.Local;

    @Local
    public interface BookTestBeanLocal {
    public void test();
    }
    ------------------------------------------------------
    import javax.ejb.Remote;

    @Remote
    public interface BookTestBeanRemote {
    public void test();
    }

  • 28 слайд

  • 29 слайд

  • 30 слайд

  • 31 слайд

  • Перехватчики(interceptors)При создании enterprise-приложений часто возникает...

    32 слайд

    Перехватчики(interceptors)
    При создании enterprise-приложений часто возникает необходимость записывать лог вызываемых методов (в целях отладки или для лога безопасности), а так же контролировать доступ пользователей к отдельным частям приложения. Для этого используются перехватчики - объекты, методы которых вызываются автоматически при вызове метода EJB-бина.

  • Перехватчики(interceptors)Объект-перехватчик является POJO, за тем лишь исклю...

    33 слайд

    Перехватчики(interceptors)
    Объект-перехватчик является POJO, за тем лишь исключением, что метод, который должен вызываться автоматически аннотируется @AroundInvoke

  • package com.sample;
 
import javax.interceptor.AroundInvoke;
import javax.int...

    34 слайд

    package com.sample;
     
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
     
    public class MyInterceptor {
     
        @AroundInvoke
        public Object log(InvocationContext ctx) throws Exception
        {
            System.out.println("*** TracingInterceptor intercepting " + ctx.getMethod().getName());
            long start = System.currentTimeMillis();
            String param = (String)ctx.getParameters()[0];
     
            if (param == null)
                ctx.setParameters(new String[]{"default"});
     
            try
            {
                return ctx.proceed();
            }
            catch(Exception e)
            {
                throw e;
            }
            finally
            {
                long time = System.currentTimeMillis() - start;
                String method = ctx.getClass().getName();
                System.out.println("*** TracingInterceptor invocation of " + method + " took " + time + "ms");
            }
        }
    }

  • @Stateless(name=&quot;SampleEJB&quot;)
@RemoteBinding(jndiBinding=&quot;SampleEJB&quot;)
@Interce...

    35 слайд

    @Stateless(name="SampleEJB")
    @RemoteBinding(jndiBinding="SampleEJB")
    @Interceptors(value=com.sample.MyInterceptor.class)
     
    public class SampleBean implements Sample {
     
        public void doSomething(String param) {
            callWebService(param);
        }
        @AroundInvoke
        public Object log(InvocationContext ctx) throws Exception
        {
     
            try
            {
                return ctx.proceed();
            }
            catch(Exception e)
            {
                throw e;
            }
        }
    }

  • 36 слайд

  • 37 слайд

  • Literaturehttp://j4sq.blogspot.com/2011/10/ejb-1.html
http://www.laliluna.de/...

    38 слайд

    Literature
    http://j4sq.blogspot.com/2011/10/ejb-1.html
    http://www.laliluna.de/articles/posts/ejb-3-tutorial-jboss.html
    https://www.youtube.com/watch?v=wKwihFhBjHI
    http://www.tutorialspoint.com/ejb/ejb_interceptors.htm



Краткое описание документа:

С тех пор как компания Sun в 1997 году представила технологию EJB широкой общественности, вокруг нее успел сложиться очень мощный и развитый сектор серверных технологий, включающий помимо EJB такие технологие как: сервлеты (servlets), JMS (Java Messaging Service), JSP (Java Server Pages), JCA (Java Connectors Architecture), JDBC (Java Database Connectivity), JAAS (Java Authorization & Authentication System), а также технологии управления транзакциями и многие другие. Наличие всех этих технологией, к тому-же объединенных общей идеологией делает платформу J2EE в целом и технологию EJB в частности, крайне привлекательным решением.

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 175 789 материалов в базе

Скачать материал

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 27.02.2015 1103
    • PPTX 688 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Dudnik Oxana Antonovna. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Dudnik Oxana Antonovna
    Dudnik Oxana Antonovna
    • На сайте: 8 лет и 2 месяца
    • Подписчики: 1
    • Всего просмотров: 24897
    • Всего материалов: 37

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой