Pessoal,
tenho uma classe com @Startup que agenda a execução de um serviço com EJB TimerService.
Acontece que esse agendamento depende de um EJB de outro projeto para buscar as configurações de horário de execução.
Quando mando subir o servidor, se o EJB do outro projeto ainda não estiver rodando, vai ocorrer erro, pois não vai conseguir injetar esse EJB.
Tentei resolver isso utilizando @DependsOn, mas pelo que li, ele só funciona quando o EJB também for um singleton, o que não é o caso.
Alguma sugestão de como eu posso resolver isso? Algo como o DependsOn, que diz que a minha classe só deve ser rodada quando alguma dependência for satisfeita.
Se ajudar, segue abaixo exemplo de código:
@Startup
@Singleton
public class ProcessamentoEnviarEmail {
private ConfiguracaoPortalServiceRemote configuracaoPortalService;
@Resource
private TimerService timerService;@PostConstruct public void processamentoArquivoScheduler(){ this.agendar(); }@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) @Timeout public void handleTimer(final Timer timer) {// executa agendamento}
public void agendar() {
// EJB externo para buscar a configuração do agendamento configPortal = getConfiguracaoPortalService().getParametroByChave("XXXXXXX"); . . . .}
public ConfiguracaoPortalServiceRemote getConfiguracaoPortalService() {
EJBUtil ejbUtil =new EJBUtil(“GerenciadorServiceEAR”, “GerenciadorService”);
if (configuracaoPortalService == null) { try { configuracaoPortalService = ejbUtil.lookup("ConfiguracaoPortalServiceBean"); } catch (br.com.meta.commons.exception.SystemException e) { e.printStackTrace(); } } return configuracaoPortalService;}
}