Pessoal,
Estou desenvolvendo uma aplicação web com EJB 2.1 onde pretendo que de 3 em 3 minutos a aplicação
efetue uma consulta em um WebService, utilizando o método createTimer através da classe TimerService.
Porém, na inicialização da aplicação consta um erro de NullPointerException referente à classe
onde estou desenvolvendo esse método.
Segue o código:
//método createTimer
public void createTimer(final int pollIntervalMillis, final com.nfe.info.ConsultaStatusInfo info) {
log.info("Create Timer. Info = " + info);
TimerService timerService = context.getTimerService();
timerService.createTimer(pollIntervalMillis, info);
}
//método ejbTimeout onde chamo o método createTimer
public void ejbTimeout(Timer timer) {
ConsultaStatusInfo info = (ConsultaStatusInfo)timer.getInfo();
NfeConsultaSta nfeConsultaStaSefaz = new NfeConsultaSta();
//Lê a propriedade de Ambiente
String ambiente = System.getProperty("nfe-alliance.service.sefaz", "HOMOLOGACAO");
int tpAmb = 0;
if(ambiente.equals("HOMOLOGACAO")) {
tpAmb = 1;
} else if (ambiente.equals("PRODUCAO")){
tpAmb = 2;
}
try {
Iterator i = info.getListaUf().iterator();
int z = 0;
while(i.hasNext()) {
String uf = (String)info.getListaUf().get(z);
//Cria arquivo XML
ConsStatServDocument stat = ConsStatServDocument.Factory.newInstance();
stat.getConsStatServ().setCUF(br.inf.portalfiscal.nfe.TCodUfIBGE.Enum.forString(uf));
stat.getConsStatServ().setTpAmb(br.inf.portalfiscal.nfe.TAmb.Enum.forInt(tpAmb));
stat.getConsStatServ().setXServ("STATUS");
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +stat.toString();
//Faz a consulta do status da respectiva UF na Sefaz
String response = ServiceFactory.getInstance(uf).consultaStatus(xml);
RetConsStatServDocument document = RetConsStatServDocument.Factory.parse(response);
//Acessa os atributos do xml
nfeConsultaStaSefaz.setCodUf(document.getRetConsStatServ().getCUF().toString());
nfeConsultaStaSefaz.setAmbiente(Short.parseShort(document.getRetConsStatServ().getTpAmb().toString()));
nfeConsultaStaSefaz.setCodStatus(Short.parseShort(document.getRetConsStatServ().getCStat()));
nfeConsultaStaSefaz.setMotivo(document.getRetConsStatServ().getXMotivo());
nfeConsultaStaSefaz.setDtRcbto(Date.valueOf(String.valueOf(document.getRetConsStatServ().getDhRecbto())));
nfeConsultaStaSefaz.setDtRetorno(Date.valueOf(String.valueOf(document.getRetConsStatServ().getDhRetorno())));
nfeConsultaStaSefaz.setObservacao(document.getRetConsStatServ().getXObs());
//Consulta a última modificação no banco
List consultaBanco = ServiceDao.getInstance().consultaStatusUf(nfeConsultaStaSefaz.getCodUf());
Iterator it = consultaBanco.iterator();
short codStatBanco = 0;
if(it.hasNext()) {
NfeConsultaSta nfeConsultaBanco = (NfeConsultaSta)it.next();
codStatBanco = nfeConsultaBanco.getCodStatus();
}
//Verifica se houve modificação no último status
if(nfeConsultaStaSefaz.getCodStatus() != codStatBanco) {
//Grava novo status no banco
ServiceDao.getInstance().saveStatUf(nfeConsultaStaSefaz);
}
z++;
}
}
catch(Exception e) {
log.error(e);
}
timerEJB = 180000;
createTimer(timerEJB, info);
}
Alguém tem alguma idéia de como resolucionar esse problema de NullPointerException?