Обновить данные в EJB без состояния


Существует ли функция, которая вызывается каждый раз, когда EJB ищется? Мне нужно обновить некоторые данные перед вызовом любого метода.

1 2

1 ответ:

Не уверен, что понимаю, что именно Вы имеете в виду. Во-первых, вам, вероятно, нужно различать безгосударственные и статусные EJBs.

  • И EJB без гражданства хорошо, гражданства, и не должны содержать данных. Приложение. сервер может решить уничтожить или восстановить его в любое время. На самом деле вы не держите ссылку на конкретный экземпляр, который создается, когда он просматривается. Приложение. сервер поддерживает пул EJB, и один из них используется для каждого вызова.

  • Статусный EJB может содержать данные. Вы держите ссылку на один конкретный экземпляр,который создается при поиске Боба. Методы обратного вызова могут быть заданы с помощью @PostConstruct или @PreDestroy (Эти обратные вызовы также существуют для ejbs без состояния, но имеют меньший смысл).

Тем не менее, если вам нужно выполнить что-то перед вызовом метода, я предлагаю вам использовать перехватчик (используя @Interceptor, работает для безгосударственных и статусных EJBs). Так же, как и с AOP, вы получаете шанс выполнить что-то до и после этого. после фактического выполнения метода bean, например, обновите кэш.