pessoal estou fazendo uma busca em um BD e esta me retornando esta excption
alguem pode me ajudar?
valeu
pessoal estou fazendo uma busca em um BD e esta me retornando esta excption
alguem pode me ajudar?
valeu
Cara quando ocorre esse erro é por que houve um estouro de memória na JVM, ou seja, houve um estouro de uma pilha (Stack), pode ser métodos chamando métodos e houve algum loop infinito. DÊ uma olhada se vc não está chamando várias classes ou metodos infinitamente.
Dê uma olhada nesses post pode te ajudar.
http://www.guj.com.br/posts/list/87065.java
http://www.javafree.org/javabb/viewtopic.jbb?t=6735
Abraço
Esse erro acontece quando vc chama um método que chama outro que chama ele mesmo e chama outro e chama ele mesmo…
public final class teste {
public static void main(String[] args){
new teste().vai();
}
public void vai(){
vai2();
}
public void vai2(){
vai();
}
}
ok, acho que foi isso que o ivo disse que aconteceu.
estou tentando fazer uma busca, e estou com problemas ao passar parametros.
estou usando um query nativa e nela passando os parametros que vem do meu ManagedBean, e apártir do momento que dei um new ManagedBean em meu DAO começou dar este erro.
Podem me ajudar?
Só com código.
aqui está o meu DAO:
public class PorPoloDao {
public static List<VendasPorPolo> ListaVendasPorPolo(String dtInicial,
String dtFinal) {
System.out.println("Abrindo sessao para INFORMAÇÔES GERENCIAIS");
Session s = HibernateUtil.getSession();
System.out.println("Sessão IG iniciada com sucesso!!!");
System.out.println("Executando query...");
String sql = "SELECT "
+ " CM_POLO.DS_POLO, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', CM_ITEM.QTDE, 0 ) ) UNIDADE_PERF, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', 0, CM_ITEM.QTDE ) ) UNIDADE_MED, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', CM_ITEM.VL_LIQUIDO_TOTAL, 0 ) ) VALOR_PERF, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', 0, CM_ITEM.VL_LIQUIDO_TOTAL ) ) VALOR_MED, "
+ " CM_POLO.SIGLA_POLO"
+ " FROM CM_POLO, "
+ " ES_PRODUTO_FARMACEUTICO, "
+ " CM_VENDEDOR, "
+ " CM_ITEM, "
+ " CM_MOVIMENTO "
+ " WHERE ES_PRODUTO_FARMACEUTICO.ID_PRODUTO = CM_ITEM.ID_PRODUTO "
+ " AND CM_POLO.ID_POLO = CM_VENDEDOR.ID_POLO "
+ " AND CM_VENDEDOR.ID_VENDEDOR = CM_MOVIMENTO.ID_VENDEDOR "
+ " AND CM_ITEM.ID_MOVIMENTO = CM_MOVIMENTO.ID_MOVIMENTO "
+ " AND CM_MOVIMENTO.DM_CANCELAMENTO <> 'S' "
+ " AND CM_MOVIMENTO.ID_TIPO_NOTA IN ( 1, 10, 11 ) "
+ " AND CM_MOVIMENTO.DT_MOVIMENTO BETWEEN TO_DATE(:dtInicial, 'dd/mm/yyyy') "
+ " AND TO_DATE(:dtFinal, 'dd/mm/yyyy') "
+ " GROUP BY CM_POLO.DS_POLO,CM_POLO.SIGLA_POLO";
SQLQuery qryVP = s.createSQLQuery(sql);
qryVP.setResultTransformer(Transformers
.aliasToBean(VendasPorPolo.class));
qryVP.setParameter("dtInicial", dtInicial);
qryVP.setParameter("dtFinal", dtFinal);
return qryVP.list();
}
}
Meu ManagedBean:
public class VendasPorPoloManager {
private String dtInicial;
private String dtFinal;
public String getDtInicial() {
return dtInicial;
}
public void setDtInicial(String dtInicial) {
this.dtInicial = dtInicial;
System.out.println("Data inicial para busca -> " + dtInicial);
}
public String getDtFinal() {
return dtFinal;
}
public void setDtFinal(String dtFinal) {
this.dtFinal = dtFinal;
System.out.println("Data final para busca -> " + dtFinal);
}
public String buscar() {
try {
System.out.println("Realizando consulta -> " + dtInicial + " a "
+ dtFinal + " na classe " + getClass());
System.out.println("Fim da consulta.");
return "ok";
} catch (Exception e) {
System.out.println(e.getClass() + " retornou uma exception -> "
+ e.getMessage());
return "erro_ig";
}
}
private VendasPorPolo vendasPorPolo = new VendasPorPolo();
private List<VendasPorPolo> listaVendasPorPolo = PorPoloDao
.ListaVendasPorPolo(dtInicial, dtFinal);
public VendasPorPolo getVendasPorPolo() {
return vendasPorPolo;
}
public void setVendasPorPolo(VendasPorPolo vendasPorPolo) {
this.vendasPorPolo = vendasPorPolo;
}
public List<VendasPorPolo> getListaVendasPorPolo() {
System.out.println("Qtde. de informações Por Polo -> "
+ listaVendasPorPolo.size());
return listaVendasPorPolo;
}
public void setListaVendasPorPolo(List<VendasPorPolo> listaVendasPorPolo) {
this.listaVendasPorPolo = listaVendasPorPolo;
}
}
esta é minha jsp:
<h:inputText required="true" maxlength="10"
value="#{vendasPorPoloManager.dtInicial}" id="dtInicial"
onkeyup="return txtBoxFormat(this, '99/99/9999', event);">
<a4j:support event="onchange"></a4j:support>
</h:inputText>
<rich:message styleClass="msgDatasIG" for="dtInicial"></rich:message>
<f:verbatim>
<br>
</f:verbatim>
<h:outputText styleClass="label_dtFinal" value="Dt.Final: "></h:outputText>
<f:verbatim>
<br>
</f:verbatim>
<h:inputText required="true" maxlength="10"
value="#{vendasPorPoloManager.dtFinal}" id="dtFinal"
onkeyup="return txtBoxFormat(this, '99/99/9999', event);">
<a4j:support event="onchange"></a4j:support>
</h:inputText>
<rich:message styleClass="msgDatasIG" for="dtFinal"></rich:message>
<f:verbatim>
<br>
<br>
</f:verbatim>
<a4j:commandButton styleClass="bt_atualizar" value="Atualizar >>"
action="#{vendasPorPoloManager.buscar}"></a4j:commandButton>
e depois exibo o resultado em uma dataTable.
valeu pela atenção.
Bom eu não achei ali no teu dao ele instanciando o teu VendasPorPoloManager (deve ter mais código), mas se realmente isso estiver acontecendo provavelmente está ai o erro, pq o dao chama o Manager e na linha 41 o manager chama o dao e assim por diante. Se não for isso só com esse código eu não consegui ve erro.
flw!
desculpa ivo, eh que tinha alterado
mas esta assim:
public class PorPoloDao {
public static List<VendasPorPolo> ListaVendasPorPolo() {
VendasPorPoloManager vpm = new VendasPorPoloManager();
System.out.println("Abrindo sessao para INFORMAÇÔES GERENCIAIS");
Session s = HibernateUtil.getSession();
System.out.println("Sessão IG iniciada com sucesso!!!");
System.out.println("Executando query...");
String sql = "SELECT "
+ " CM_POLO.DS_POLO, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', CM_ITEM.QTDE, 0 ) ) UNIDADE_PERF, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', 0, CM_ITEM.QTDE ) ) UNIDADE_MED, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', CM_ITEM.VL_LIQUIDO_TOTAL, 0 ) ) VALOR_PERF, "
+ " SUM( DECODE( ES_PRODUTO_FARMACEUTICO.DM_CLASSIFICACAO, '3', 0, CM_ITEM.VL_LIQUIDO_TOTAL ) ) VALOR_MED, "
+ " CM_POLO.SIGLA_POLO"
+ " FROM CM_POLO, "
+ " ES_PRODUTO_FARMACEUTICO, "
+ " CM_VENDEDOR, "
+ " CM_ITEM, "
+ " CM_MOVIMENTO "
+ " WHERE ES_PRODUTO_FARMACEUTICO.ID_PRODUTO = CM_ITEM.ID_PRODUTO "
+ " AND CM_POLO.ID_POLO = CM_VENDEDOR.ID_POLO "
+ " AND CM_VENDEDOR.ID_VENDEDOR = CM_MOVIMENTO.ID_VENDEDOR "
+ " AND CM_ITEM.ID_MOVIMENTO = CM_MOVIMENTO.ID_MOVIMENTO "
+ " AND CM_MOVIMENTO.DM_CANCELAMENTO <> 'S' "
+ " AND CM_MOVIMENTO.ID_TIPO_NOTA IN ( 1, 10, 11 ) "
+ " AND CM_MOVIMENTO.DT_MOVIMENTO BETWEEN TO_DATE(:dtInicial, 'dd/mm/yyyy') "
+ " AND TO_DATE(:dtFinal, 'dd/mm/yyyy') "
+ " GROUP BY CM_POLO.DS_POLO,CM_POLO.SIGLA_POLO";
SQLQuery qryVP = s.createSQLQuery(sql);
qryVP.setResultTransformer(Transformers
.aliasToBean(VendasPorPolo.class));
qryVP.setParameter("dtInicial", vpm.getDtInicial());
qryVP.setParameter("dtFinal", vpm.getDtFinal());
return qryVP.list();
}
}
orbigado
Tai o erro então, igual como eu tinha dito anteriormente:
o dao tá instanciando o VendasPorPoloManager na linha 5:
VendasPorPoloManager vpm = new VendasPorPoloManager();
O VendasPorPoloManager instancia uma listaVendasPorPolo (que está na dao e vai chamar de novo o manager)
private List<VendasPorPolo> listaVendasPorPolo = PorPoloDao
.ListaVendasPorPolo(dtInicial, dtFinal);
O dao tá chamando o manager e o manager ta chamando o dao.
entendi.
mas eai como eu possoi resolver isso? fazer essa busca funcionar!
orbigado
Tira o:
VendasPorPoloManager vpm = new VendasPorPoloManager();
do dao e recebe as datas como parametro (como tava antes).
public static List<VendasPorPolo> ListaVendasPorPolo(String dtInicial, String dtFinal) {
ok ivo, fiz isso ai mas é o seguinte, quando chamo o metodo busca atravez do comandButton ele nao retorna as informações.
olha meu metodo busca:
public String buscar() {
try {
System.out.println("Realizando consulta -> " + dtInicial + " a "
+ dtFinal + " na classe " + getClass());
System.out.println("Fim da consulta.");
return "ok";
} catch (Exception e) {
System.out.println(e.getClass() + " retornou uma exception -> "
+ e.getMessage());
return "erro_ig";
} finally {
}
}
valeu pela atenção
Claro pq vc ta retornando a string “ok” no método buscar e na verdade vc deveria mudar o retorno do método buscar para List e no método buscar retornar listaVendasPorPolo, ou deixar o retorno como String, fazer um for na listaVendasPorPolo e ir montando um string para retornar depois. Eu não sei como é a tua classe VendasPorPolo mas digamos que ela tenha nome e idade:
public String buscar() {
try {
System.out.println("Realizando consulta -> " + dtInicial + " a "
+ dtFinal + " na classe " + getClass());
System.out.println("Fim da consulta.");
StringBuilder retorno = new StringBuilder();
for(VendasPorPolo aux : listaVendasPorPolo){
retorno.append(aux.getNome());
retorno.append(" ");
retorno.append(aux.getIdade());
retorno.append(" ");
}
return retorno.toString();
} catch (Exception e) {
System.out.println(e.getClass() + " retornou uma exception -> "
+ e.getMessage());
return "erro_ig";
} finally {
}
}
ok ivo, olha como esta meu DAO agora:
public class VendasPorPoloManager {
private String dtInicial;
private String dtFinal;
public String getDtInicial() {
return dtInicial;
}
public void setDtInicial(String dtInicial) {
this.dtInicial = dtInicial;
System.out.println("Data inicial para busca -> " + dtInicial);
}
public String getDtFinal() {
return dtFinal;
}
public void setDtFinal(String dtFinal) {
this.dtFinal = dtFinal;
System.out.println("Data final para busca -> " + dtFinal);
}
public String buscar() {
try {
System.out.println("Realizando consulta -> " + dtInicial + " a "
+ dtFinal + " na classe " + getClass());
System.out.println("Fim da consulta.");
StringBuilder retorno = new StringBuilder();
for (VendasPorPolo aux : listaVendasPorPolo) {
retorno.append(aux.getSIGLA_POLO());
retorno.append(" ");
retorno.append(aux.getDS_POLO());
retorno.append(" ");
retorno.append(aux.getUNIDADE_MED());
retorno.append(" ");
retorno.append(aux.getUNIDADE_PERF());
retorno.append(" ");
retorno.append(aux.getVALOR_MED());
retorno.append(" ");
retorno.append(aux.getVALOR_PERF());
}
return retorno.toString();
} catch (Exception e) {
System.out.println(e.getClass() + " retornou uma exception -> "
+ e.getMessage());
return "erro_ig";
} finally {
}
}
private VendasPorPolo vendasPorPolo = new VendasPorPolo();
private List<VendasPorPolo> listaVendasPorPolo = PorPoloDao
.ListaVendasPorPolo(dtInicial, dtFinal);
public VendasPorPolo getVendasPorPolo() {
return vendasPorPolo;
}
public void setVendasPorPolo(VendasPorPolo vendasPorPolo) {
this.vendasPorPolo = vendasPorPolo;
}
public List<VendasPorPolo> getListaVendasPorPolo() {
System.out.println("Qtde. de informações Por Polo -> "
+ listaVendasPorPolo.size());
return listaVendasPorPolo;
}
public void setListaVendasPorPolo(List<VendasPorPolo> listaVendasPorPolo) {
this.listaVendasPorPolo = listaVendasPorPolo;
}
}
agora a jsp ja esta abrindo, mas quando passo as datas ela nao retorna nada. dei um sys out e esta imprimindo oq digitei
Realizando consulta -> 01/01/2008 a 02/04/2008 na classe class br.com.fitsistemas.manager.VendasPorPoloManager
Fim da consulta.
pq será que nao ta funcionando?
Talvez pq a tua lista está sendo criada apenas uma vez (inicialização da classe) e sempre vai retornar a mesma coisa.
Faz assim:
public String buscar() {
try {
System.out.println("Realizando consulta -> " + dtInicial + " a "
+ dtFinal + " na classe " + getClass());
//Executa o sql
listaVendasPorPolo = PorPoloDao.ListaVendasPorPolo(dtInicial, dtFinal);
System.out.println("Fim da consulta.");
StringBuilder retorno = new StringBuilder();
for (VendasPorPolo aux : listaVendasPorPolo) {
retorno.append(aux.getSIGLA_POLO());
retorno.append(" ");
retorno.append(aux.getDS_POLO());
retorno.append(" ");
retorno.append(aux.getUNIDADE_MED());
retorno.append(" ");
retorno.append(aux.getUNIDADE_PERF());
retorno.append(" ");
retorno.append(aux.getVALOR_MED());
retorno.append(" ");
retorno.append(aux.getVALOR_PERF());
}
return retorno.toString();
} catch (Exception e) {
System.out.println(e.getClass() + " retornou uma exception -> "
+ e.getMessage());
return "erro_ig";
} finally {
}
}
agora eu vou almoçar.
flw!
ok amigo, funcionou agora!
mas esta dando um erro na dataScroller
09/04/2008 13:14:53 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NoSuchMethodError: org.richfaces.component.UIDatascroller.setupFirstRowValue()V
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:54)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.updateScrollers(DataScrollerViewPhaseListener.java:59)
at org.richfaces.component.DataScrollerViewPhaseListener.beforePhase(DataScrollerViewPhaseListener.java:68)
at javax.faces.component.UIViewRoot.notifyPhaseListeners(UIViewRoot.java:605)
at javax.faces.component.UIViewRoot.encodeBegin(UIViewRoot.java:537)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
quando nao uso ela funciona.
como faço para minha dataTable se atualizar no momento que eu chamo o metodo?
Nisso eu não sei te ajudar.
blz ivo
obrigado pela sua ajuda viu
precisar é soh chamar, um grande abraço,