Я ищу точку входа в EJB, развернутую на JBoss.
Сервлеты имеют тег load-on-startup
для использования в web.xml
.
Я ищу аналогичную функциональность init()
для EJB.
Я ищу точку входа в EJB, развернутую на JBoss.
Сервлеты имеют тег load-on-startup
для использования в web.xml
.
Я ищу аналогичную функциональность init()
для EJB.
Этого не было для EJB до 3.1. С EJB 3.1 вы можете использовать singleton bean для имитации того, что:
От Заявления о запуске/завершении приложений:
@Startup
@Singleton
public class FooBean {
@PostConstruct
void atStartup() { ... }
@PreDestroy
void atShutdown() { ... }
}
В противном случае вам нужно будет положиться на старый добрый трюк, чтобы использовать ServletContextInitializer
.
Существует некоторое расширение для приложения, например. прослушиватель жизненного цикла для Glassfish. Может быть, такая вещь для JBoss.
Но если бы я был вами, я бы постарался как можно больше полагаться на стандартные функции. Проблема с нестандартным расширением заключается в том, что вы никогда не знаете точно, что можно сделать или нет, например. вы можете начать транзакцию или нет, и т.д.
В этой статье описаны семь различных способов вызова функций при запуске сервера. Не все будут работать с JBoss.
Семь способов начать все. Классы запуска Java EE с GlassFish и WebLogic
Если вы настроите JBoss AS 5.1 и не против использования JBoss EJB 3.0 Extensions, вы можете создать сервис bean для загрузки вашего EJB. Если ваша служба реализует интерфейс, аннотированный аннотацией @Management
и объявляет метод с сигнатурой public void start() throws Exception
, JBoss будет вызывать этот метод при запуске службы. Затем вы можете вызвать выделенный init()
метод на EJB, который вы хотите инициализировать:
@Service
public class BeanLauncher implements BeanLauncherManagement
{
@EJB private SessionBeanLocal sessionBean;
@Override
public void start() throws Exception
{
sessionBean.init();
}
}
@Management
public interface BeanLauncherManagement
{
public void start() throws Exception;
}
Более подробную информацию об этом, включая дополнительные события жизненного цикла, можно найти здесь.
Управляемый Beans может использоваться для выполнения некоторого процесса при запуске JBoss, вам нужно добавить запись этого управляемого файла bean в файл конфигурации.
Вы должны иметь возможность добавить следующую строку в начало метода, который вы хотите запустить при запуске:
@Observer("org.jboss.seam.postInitialization")