Как возвращаемое значение SessionContext.getBusinessObject () отличающееся от 'этого' ключевого слова, используемого в бобе?

SessionContext.getBusinessObject () описан в документах следующим образом,

Получите объект, который может использоваться для вызова текущего боба через данный бизнес-интерфейс.

Параметры: businessInterface - Один из локального бизнеса взаимодействует через интерфейс или удаленные бизнес-интерфейсы для этого боба сессии.

Возвраты: бизнес-объект, соответствующий данному бизнес-интерфейсу.

Разве я не могу использовать 'это' ключевое слово в Java вместо этого, для выполнения того же? Как они отличаются?

6
задан stratwine 1 August 2010 в 06:28
поделиться

1 ответ

Мотивация здесь в том, что большинство реализаций EJB работают на прокси. Вы не будете слишком далеки от того, чтобы думать об этом как о старой школе АОП. Бизнес-интерфейс реализуется контейнером EJB, довольно часто через простой java.lang.reflect.Proxy, и этот объект передается всем в системе, кто запрашивает ejb через @EJB или поиск JNDI.

Прокси-сервер подключен к контейнеру, и все его вызовы идут непосредственно в контейнер, который выполняет проверки безопасности, запускает / останавливает / приостанавливает транзакции, вызывает перехватчики и т. Д. И т. Д., А затем, наконец, делегирует вызов компоненту. instance - и, конечно, выполните любую очистку, необходимую из-за каких-либо возникших исключений, - затем, наконец, передайте возвращаемое значение через прокси-сервер вызывающей стороне.

Вызов this.foo () напрямую или передача this вызывающей стороне, чтобы они также могли выполнять прямые вызовы, пропустит все это, и контейнер будет фактически вырезан из изображения. Метод getBusinessObject (Class) позволяет экземпляру компонента получить прокси-сервер для самого себя, чтобы он мог вызывать свои собственные методы и использовать связанные с ним службы управления контейнерами - перехватчики, управление транзакциями, обеспечение безопасности и т. Д.

15
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

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