Примеры или Случаи Использования для объяснения Атрибутов Транзакции EJB

«Dojo way» для привязки контекста к функции используется с помощью lang.hitch:

hitch () возвращает функцию, которая будет выполнять заданную функцию в данном контексте.

blockquote>

https://dojotoolkit.org/reference-guide/1.10/dojo/_base/lang.html#hitch

Вот как это делается сделано с чистым Dojo:

require([
    'dojo/_base/lang',
    'dojo/dom',
    'dojo/dom-construct',
    'dojo/on'
], function(
    lang,
    dom,
    domConstruct,
    on
) {

    function onClick () {
        console.log('Got clicked context: ', this)
    }

    var link = domConstruct.create('a', {
        textContent: 'Click me!',
        href: '#'
    }, dom.byId('my-div'));

    on(link, 'click', lang.hitch(this, onClick));  

});

21
задан cwash 19 November 2009 в 20:18
поделиться

2 ответа

Я думаю, что имеет смысл подумать об этом с точки зрения взаимодействия контейнера с вызывающей стороной метода EJB как истинного монитора ... поэтому я хотел бы использовать вышибалу метафора в различных сценариях.

См. на этой странице хорошее описание / обзор атрибутов транзакции.

Обязательно (ТРЕБУЕТСЯ @TransactionAttribute)
Ночной клуб

Приходи в клуб, нужен билет для входа. Если у вас его нет, он будет (куплен?) Отдан вам у двери.

Транзакция - это БИЛЕТ.
Контейнер - БУНСЕР.

Требуется новый (REQUIRES_NEW @TransactionAttribute)
Комедийные клубы, минимум 1 напиток, повторный вход запрещен.

Приходить в клуб, запрещать еду / напитки на улице, вы должны оставить их у дверей. Чтобы попасть внутрь, вы должны покупать минимум 1 напиток каждый раз, когда выходите и снова входите.

Транзакция - НАПИТОК.
Контейнер - БУНСЕР.
Приостановка транзакции - УХОД ЗА ДВЕРЬЮ.

Поддерживает (ПОДДЕРЖИВАЕТ @TransactionAttribute)
Домашняя вечеринка

Приходите на вечеринку, алкоголь разрешен. Мы впустим вас, если у вас есть свой алкоголь, если нет, мы впустим и вас.

Транзакция - АЛКОГОЛЬ.
Контейнер - ХОЗЯИН.

Обязательно (ОБЯЗАТЕЛЬНО @TransactionAttribute)
Вечеринка только по приглашению

Приходите на вечеринку, требуется приглашение для входа: если у вас его нет и вы пытаетесь войти, вышибала звонит властям.

Транзакция - ПРИГЛАШЕНИЕ.
Контейнер - ХОЗЯИН.
Вызов исключения - это ВЫЗОВ ВЛАСТИ.

Не поддерживается (NOT_SUPPORTED @TransactionAttribute)
Концерт, камеры запрещены.

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

Транзакция - КАМЕРА.
Контейнер - ДВОРНИК.
Приостановка транзакции - УХОД ЗА ДВЕРЬЮ.

Никогда (НИКОГДА @TransactionAttribute)
Танцы в старших классах

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

Транзакция - АЛКОГОЛЬ.
Контейнер - это ЧАПЕРОН. Вызов исключения - это ВЫЗОВ ВЛАСТИ.

13
ответ дан 29 November 2019 в 06:38
поделиться

Вы можете думать о них с точки зрения Сотрудничество . Допустим, вы повар, и у вас есть дюжина печей для работы. Вам нужно испечь несколько тортов. В этом примере вы - вызываемый метод, печь - транзакция, а ваш начальник - вызывающая сторона.

  • Обязательно : если ваш босс велит вам испечь несколько пирожных, не сообщая, какую духовку вы используете, вы просто выбираете один. В конце вы закрываете духовку, убеждаясь, что никто другой не сможет ее использовать.
  • Требуется Новый : Вы всегда будете печь пироги в бесплатной духовке, которую выберете. Если вы находитесь в процессе выпечки некоторых тортов, и ваш босс говорит вам испечь другую партию, вы прерываете текущий процесс выпечки, идете и выпекаете несколько тортов в новой духовке, возобновите выпечку для старых.
  • Обязательно : Вы тупой повар. Ваш босс всегда должен сказать вам, какую духовку вы должны использовать. Если ваш босс не скажет вам, какую духовку использовать, вы кричите в ответ «глупо!».
  • NotSupported : Думайте об этом как о том, что вы делаете десерт, который не нуждается в духовке. Если вы собираетесь выпекать пирожные в духовке, остановите их, создайте десерт и возобновите выпечку.
  • Поддерживает : это больше подходит для помощника повара. Вы помощник. Если главный повар просит вас испечь пирог в духовке X, вы просто делаете это. Если он просит вас сделать десерт, вы просто делаете это. Основное отличие от остальных заключается в том, что вы никогда не задаете вопросы и не решаете что-либо делать. Вы просто выполняете приказы.
  • Никогда : Это еще один тупой повар. Если ваш начальник просит вас сделать десерт, пока вы готовите пирог, вы кричите в ответ и говорите: «Я ухожу!». Никакой пирог никогда не выпекается. Поэтому ваш босс должен быть осторожен и просить вас испечь несколько пирожных, когда вы не печете никаких пирожных.

Надеюсь, что помогает.

47
ответ дан mikek 29 November 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: