Olá amigos,
Estou com um erro na minha aplicação web (desenvolvida usando JSF, Ajax e RichFaces) e, para fazer o mapeamento, utilizo Hibernate.
Quando a aplicação vai setar um objeto do tipo List, ela utiliza um set normal:
public void setListRequisitanteString(List<String> listRequisitanteString) {
this.setListRequisitanteString(listRequisitanteString);
}
Ela sempre setava corretamente. Porém, sem motivo algum, após fazer uma alteração em uma outra página e que não tem dependência nem relação nenhuma com esse List, a aplicação começou a gerar erro de estouro de pilha:
exception
javax.servlet.ServletException: #{diariaBean.inicializarCadastroDiaria}: java.lang.StackOverflowError
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause
javax.faces.FacesException: #{diariaBean.inicializarCadastroDiaria}: java.lang.StackOverflowError
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause
javax.faces.el.EvaluationException: java.lang.StackOverflowError
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause
java.lang.StackOverflowError
br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
br.aesa.control.bean.DiariaBean.setListRequisitanteString(DiariaBean.java:168)
[...continua mais de 180 linhas]
O erro cita DiariaBean.inicializarCadastroDiaria, pois é lá que o set está sendo chamado e o erro está sendo gerado, porém, como já disse, antigamente funcionava normalmente:
public String inicializarCadastroDiaria(){
try {
setListRequisitanteString(new ArrayList<String>()); //<------------------ AQUI
setListRequisitante((ArrayList<Funcionario>) fachada.getByExample(requisitante));
setListRequisitadoString(new ArrayList<String>());
setListRequisitado((ArrayList<Funcionario>) fachada.getByExample(requisitado));
setListTransporteString(new ArrayList<String>());
setListTransporte((ArrayList<Transporte>) fachada.getByExample(transporte));
setListPagamentoString(new ArrayList<String>());
setListPagamento((ArrayList<Pagamento>) fachada.getByExample(pagamento));
setListViagemString(new ArrayList<String>());
setListViagem((ArrayList<Viagem>) fachada.getByExample(viagem));
setListCidadeString(new ArrayList<String>());
setListCidade((ArrayList<Cidade>) fachada.getByExample(cidade));
setListDiariaString(new ArrayList<String>());
setListDiaria((ArrayList<Diaria>) fachada.getByExample(diaria));
setListUfString(new ArrayList<String>());
for(Funcionario r: listRequisitante){
listRequisitanteString.add(r.getNome());
}
[...Continua]
Desfiz a alteração que, repito, não tinha qualquer tipo de relacionamento com o List em questão (além disso, esse List é chamado uma página antes da página onde fizemos a nova alteração). Porém o erro continua acontecendo. Eu procurei o erro no Google, e pode ser um possível bug no Hibernate (que, aliás, foi citado neste próprio fórum). Mas eu utilizo uma versão do Hibernate que é mais nova do que a que estava com o bug (e que, de acordo com o próprio site oficial do Hibernate, já se encontrava corrigido).
Alguém poderia me dar alguma sugestão?
Desde já muito obrigado.
Magno