EJB 2.1 - TimerService

0 respostas
H

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?

Criado 18 de fevereiro de 2008
Respostas 0
Participantes 1