SessionContext.getBusinessObject () описан в документах следующим образом,
Получите объект, который может использоваться для вызова текущего боба через данный бизнес-интерфейс.
Параметры: businessInterface - Один из локального бизнеса взаимодействует через интерфейс или удаленные бизнес-интерфейсы для этого боба сессии.
Возвраты: бизнес-объект, соответствующий данному бизнес-интерфейсу.
Разве я не могу использовать 'это' ключевое слово в Java вместо этого, для выполнения того же? Как они отличаются?
Мотивация здесь в том, что большинство реализаций EJB работают на прокси. Вы не будете слишком далеки от того, чтобы думать об этом как о старой школе АОП. Бизнес-интерфейс реализуется контейнером EJB, довольно часто через простой java.lang.reflect.Proxy, и этот объект передается всем в системе, кто запрашивает ejb через @EJB или поиск JNDI.
Прокси-сервер подключен к контейнеру, и все его вызовы идут непосредственно в контейнер, который выполняет проверки безопасности, запускает / останавливает / приостанавливает транзакции, вызывает перехватчики и т. Д. И т. Д., А затем, наконец, делегирует вызов компоненту. instance - и, конечно, выполните любую очистку, необходимую из-за каких-либо возникших исключений, - затем, наконец, передайте возвращаемое значение через прокси-сервер вызывающей стороне.
Вызов this.foo () напрямую или передача this вызывающей стороне, чтобы они также могли выполнять прямые вызовы, пропустит все это, и контейнер будет фактически вырезан из изображения. Метод getBusinessObject (Class) позволяет экземпляру компонента получить прокси-сервер для самого себя, чтобы он мог вызывать свои собственные методы и использовать связанные с ним службы управления контейнерами - перехватчики, управление транзакциями, обеспечение безопасности и т. Д.