[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Paginação com Java Heap Space  XML
Forum Index -> Comentários Gerais
Author Message
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Pessoal, preciso de uma ajuda quanto a paginação.

Sempre usei a paginação do mentawai e nunca tive problema até que me deparei com consultas muito grandes.

Nesse caso estou recebendo a mensagem de: java.lang.OutOfMemoryError: Java heap space

Estou usando um servidor Línux 64 com 6Gb de ram e a JVM configurada para 2,5 Gb, tomcat para 2,5 Gb também (CATALINA_OPTS=?-Xms1564m -Xmx1564m?)
Como fiz isso: http://www.jardelmorais.com/?page_id=1041

Ainda estou tendo problema de falta de memória e me disseram para fazer paginação, mas agora fiquei com a dúvida: O Mentawai já não faz paginação? Seria um outro tipo?
Estou com dúvidas a respeito de como fazer a paginação que resolva isso.

Me ajudem aí por favor.

Abraço,
[Email] [WWW] [Yahoo!] [MSN]
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

A paginação deve ser feita na hora de consultar no banco de dados, quando você tiver muitos registros...

da uma pesquisada sobre:
paginação displaytag + hibernate no google

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Dei uma pesquisada e pessoal tem dito que a melhor forma seria paginar direto no banco ou com hibernate... Seria isso mesmo?

Algo do tipo:

Code:
	
 SQL :
 
    1. int indice = 1;  
    2. int qtdeRegistros = 10;  
    3.   
    4. SELECT   
    5.     campos   
    6. FROM   
    7.     (  
    8.      SELECT   
    9.         campos,   
   10.         rownum n   
   11.     FROM (  
   12.            SELECT   
   13.             campos   
   14.         FROM   
   15.             tabela  
   16.              )  
   17.      )  
   18. WHERE   
   19.     n BETWEEN indice AND indice + qtdeRegistros  
 
 
 Hibernate :
 
    1. int inicio = 1;  
    2. int registros = 10;  
    3.   
    4. String sql = "Select campos from tabela where campo = campo";  
    5. Query q = session.createQuery(sql);  
    6. q.setFirstResult(inicio);  
    7. q.setMaxResults(registros);  
    8. Collection resultado = q.list();  
 

Fonte: GUJ


Estava tentando usar uma paginação com ajax, mas não tá funcionando.. tem dado um erro:

Insira o size .... (não me lembro o resto)
Ex:
Code:
 <div class="commonDisplayTag1RecipientDiv">
            <aa:zone name="ordemServicosTable">
 	            <display:table class="commonDisplayTag1" name="objListResult" sort="external" defaultsort="4" pagesize="${limit}" id="tableOrdemServicos" partialList="true" size="resultSize"
 	                requestURI="/OrdemServicosAction.list.mtw" export="true" style="text-align:center;font-size: 8pt" 
 	                cellpadding="0" cellspacing="0" decorator="br.com.empresa.relatorios.application.utils.displaytag.OrdemServicosWrapper">
 	                <display:column media="html" title="Garantia" property="customGarantia"/>
 	                <display:column media="csv xml excel pdf rtf" title="Garantia" property="customCleanGarantia"/>
 	                <display:column media="all" title="OS" property="numOS" sortName="numOS" sortable="true" headerClass="sortable"/>
 	                <display:column media="all" title="Laudo Tec." property="customLaudoTec" sortName="laudoTec" sortable="true" headerClass="sortable"/>
                 	<display:column media="csv pdf excel xml" title="Laudo Tec." property="laudoTec" sortName="laudoTec" sortable="true" headerClass="sortable"/>
 	                <display:column media="all" title="Item" property="item" sortName="item" sortable="true" headerClass="sortable"/>
 	                <display:column media="all" title="Entrada" property="dtReceb" sortName="dtReceb" sortable="true" headerClass="sortable"/>
 	                <display:column media="all" title="Saída" property="dtLib" sortName="dtLib" sortable="true" headerClass="sortable"/>
 	                <display:column media="all" title="Tempo" property="tempo"/>
 	                <display:column media="html" title="Cliente" property="customCliente" sortName="cliente" sortable="true" headerClass="sortable"/>
 	                <display:column media="csv xml excel pdf rtf" title="Cliente" property="cliente"/>
 	                <display:column media="html" title="Produto" property="customProduto" sortName="produto" sortable="true" headerClass="sortable"/>
 	                <display:column media="csv xml excel pdf rtf" title="Produto" property="produto"/>
 	                <display:column media="all" title="Num. de Série" property="numSerie" sortName="numSerie" sortable="true" headerClass="sortable"/>	                
 	                <display:column media="all" title="NF Cliente" property="notaFiscal" sortName="notaFiscal" sortable="true" headerClass="sortable"/>
 	            </display:table>
                 </aa:zone>
                 <script type="text/javascript">
                     ajaxAnywhere.getZonesToReaload = function() { return "ordemServicosTable"; }
                     ajaxAnywhere.onAfterResponseProcessing = function() { replaceLinks(); }
                     function replaceLinks() {
                         // replace all the links in <thead> with onclick's that call AjaxAnywhere
                         var sortLinks = $$('tableOrdemServicos').getElementsByTagName('thead')[0].getElementsByTagName('a');
                         ajaxifyLinks(sortLinks);
                         if (document.getElementsByClassName('pagelinks').length > 0) {
                             var pagelinks = document.getElementsByClassName('pagelinks')[0].getElementsByTagName('a');
                             ajaxifyLinks(pagelinks);
                         }
                     }
                     function ajaxifyLinks(links) {
                         for (i=0; i < links.length; i++) {
                             links[i].onclick = function() {
                                 ajaxAnywhere.getAJAX(this.href); 
                                 return false;
                             }
                         }
                     }
                     ajaxAnywhere.showLoadingMessage = function() { };
                     replaceLinks();
                 </script>                
             </div>
 


Na verdade não entendi direito como esse exemplo faz a paginação e estou tendo esse erro pedindo o size, justamente quando uso o partiallist="true".

Sigo no caminho da paginação direto no banco? Ou com ajax seria uma boa também?

São mais de 300000 linhas

[Email] [WWW] [Yahoo!] [MSN]
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

A paginação será feita no banco, independente de ser ajax ou não.

na sua query (ou criteria) coloque:
query.setMaxResults(20).setFirstResult(pagina*20)

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

A paginação na displaytag foi resolvida utilizando ajax.

Agora, na hora de exportar para csv, excel, pdf o java tem que trazer os dados do banco de uma vez para exportar, não é?

Para exportar está dando java heap space de novo...

Como faço nesse caso?

Abraço e obrigado desde já.
[Email] [WWW] [Yahoo!] [MSN]
syagrio


[Avatar]

Joined: 23/04/2007 06:55:35
Messages: 14
Offline

Caro amigo Jardel tente usar essa implementação:

http://www.linhadecodigo.com.br/Artigo.aspx?id=1454

Creio eu que possa te ajudar, mesmo porque eu conheço o seu problema rsrss.

Abraços

Syagrio André
Homem do MUNDO
[MSN]
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Valeu grande mestre!! hehe vou dar uma olhada...

Vi algumas coisas de cubo essas semana msm. (video)

Deve dar um trabalho... hehe

Abraço!
[Email] [WWW] [Yahoo!] [MSN]
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team