Любой боб, помеченный javax.ejb.Singleton , является EJB и подчиняется условиям, которые вы указали в своем вопросе.
Вы можете обойти задержку, переместив свое "обновление базы данных"логика задачи для второго EJB:
@Stateless
public class DatabaseUpdater {
@Resource
private Datasource dataSource;
// OR
@PersistenceContext
private EntityManager em;
@javax.ejb.Asynchronous
public void updateDatabase() {
// beware of long running transaction timeouts in here!
...
}
}
и затем вызовите его из вашего компонента @Startup:
@Startup
@Singleton
public class StartupTask {
@EJB
private DatabaseUpdater databaseUpdater;
@PostConstruct
void init {
databaseUpdater.updateDatabase();
}
}