Используя этот ключевое слово для доступа к полям/методам содержания класса от внутреннего класса. В ниже, скорее изобретенный пример, мы хотим использовать sortAscending поле контейнерного класса от анонимного внутреннего класса. Используя ContainerClass.this.sortAscending вместо this.sortAscending добивается цели.
import java.util.Comparator;
public class ContainerClass {
boolean sortAscending;
public Comparator createComparator(final boolean sortAscending){
Comparator comparator = new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if (sortAscending || ContainerClass.this.sortAscending) {
return o1 - o2;
} else {
return o2 - o1;
}
}
};
return comparator;
}
}
Я изучаю ejb3, и мне просто интересно, когда удобно использовать SFSB ? Я не могу найти хороший пример, когда SFSB действительно легко решает какую-то сложную проблему.
Вы имеете в виду, как тележку для покупок? Это очевидный ответ, который я могу придумать.
На самом деле я вижу, что SLSB можно использовать как веб-сервисы, и это удобно.
EJB можно рассматривать как один из способов развертывания распределенных служб, но будьте осторожны. Термин «веб-службы» заставляет большинство людей думать о «веб-службах на основе SOAP, использующих протокол HTTP», а это не то, что у вас есть в SFSB.
Но я не знаю, когда использовать SFSB. Я вижу только проблемы с этим, потому что мы должны что-то узнать об этом, мы должны написать код, который состоит из аннотаций немного меньше, чем полностью, мы должны использовать надоедливый поиск ... И мы не получаем ничего хорошего взамен.
Это параграф сбивает с толку, но я думаю, вы говорите, что вам не очень нравятся EJB.
Например, мы не можем использовать SFSB из SLSB, потому что объекты с отслеживанием состояния могут использоваться только из контекста с отслеживанием состояния.
Верно, они дополняют друг друга. Вы используете SFSB для случаев использования, которые требуют - подождите, пока - состояние должно поддерживаться между вызовами.
Мы не можем использовать DI в сервлетах, вместо этого мы должны вручную создать экземпляр SFSB с помощью поиска, а затем поместить его в объект HttpSession . Это не может быть веб-сервис.
Откуда здесь взялись сервлеты?
Единственная выгода, которую я вижу в SFSB, - это управление транзакциями. Но я думаю, что это редкий случай, когда нам действительно нужна транзакция, а БД нам не нужна. Я могу предположить, что это может быть действительно полезно, когда мы храним наши данные в xml-файле и используем управление транзакциями в SFSB для имитации нереляционной БД.
Я думаю, что вы здесь совершенно не соответствуете. Сессионные компоненты - это те компоненты, которые знают о единицах работы и управлении транзакциями. Вероятно, им придется работать с entity-компонентами, чтобы сохранить часть этого состояния, когда вариант использования выполнен, так что транзакции не так уж редки, как вы думаете.
Я почти уверен, что я полностью неправ, поэтому приведите мне несколько действительно хороших примеров использования SFSB.
Чего вы ожидаете? Это кто-то выложит рабочий SFSB? Я не собираюсь этого делать, в основном потому, что я не большой поклонник EJB. (Я делаю все, о чем вы говорите, и даже больше, с помощью Spring.)
Но будьте уверены, что SFSB иногда бывает полезен. Тележка для покупок - очевидный пример. Вам нужно место для хранения товаров в корзине до тех пор, пока покупатель не примет решение о покупке. SFSB - один из способов добиться этого.
Я не собираюсь этого делать, в основном потому, что я не большой поклонник EJB. (Я делаю все, о чем вы говорите, и многое другое, с помощью Spring.)Но будьте уверены, что SFSB иногда бывает полезен. Тележка для покупок - очевидный пример. Вам нужно место для хранения товаров в корзине до тех пор, пока покупатель не примет решение о покупке. SFSB - один из способов добиться этого.
Я не собираюсь этого делать, в основном потому, что я не большой поклонник EJB. (Я делаю все, о чем вы говорите, и даже больше, с помощью Spring.)Но будьте уверены, что SFSB иногда бывает полезен. Тележка для покупок - очевидный пример. Вам нужно место для хранения товаров в корзине до тех пор, пока покупатель не примет решение о покупке. SFSB - один из способов добиться этого.
выбор между архитектурой с сохранением состояния и архитектурой без состояния
в большинстве случаев предпочтительнее, поскольку он проще.
хотя вначале проще понять, создание приложений без сохранения состояния приводит к ряду проблем (множество веб-служб без сохранения состояния, Spring singleton и т. д.),делая приложение менее управляемым в долгосрочной перспективе.
Я предпочитаю проектировать приложения с отслеживанием состояния, когда это возможно.
Сессионный компонент с отслеживанием состояния - способ сделать это. Spring прототип или другой компонент с веб-областью видимости.
также ознакомьтесь с фреймворком jboss seam.