estou com um problema no meu servidor web. Tenho um servlet que devolve um arquivo xml. Até semana passada estava tudo certo. Porém este arquivo cresce a cada dia, pois é reflexo do tamanho de uma tabela de dados do banco. Quando esse arquivo ultrapassou os 1Mb de tamanho, o servlet começou a interromper a geração do arquivo deixando-o inacabado. Parece que há um tempo de execução máximo definido dentro do tomcat (5.5) que foi ultrapassado e então o processo é abortado. Estou viajando ou pode ser isso mesmo? Alguma dica? Não sei bem por onde começar.
Tanto que voce pode programar chats com conexoes “infinitas” ou até mesmo downloads muito maiores que 1 MB.
Poste seu código pra gente dar uma olhada.
Chaidi
Aí vai:
packageorg.pec.servlet;importjava.io.IOException;importjava.util.Collection;importjava.util.Iterator;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.pec.dao.PropriedadeDao;publicclassGeraKmlextendsHttpServlet{publicvoiddoGet(HttpServletRequestreq,// This provides information sent by the browserHttpServletResponseres// This is used to send information back to the browser)throwsServletException,// General exception that should be thrown if there// is a unrecoverable error in the ServletIOException{// Set the MIME type for the information being sent to the browser.// In this case, we are going to send back HTMLStringaction=req.getParameter("do");if(action==null)action="all";ServletOutputStreamout=res.getOutputStream();res.setHeader("Expires","0");res.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");res.setHeader("Pragma","public");res.setContentType("application/octet-stream");res.setHeader("Content-Disposition"," attachment; filename=propriedades.kml");PropriedadeDaopropDao=newPropriedadeDao();HttpSessionsession=req.getSession();Collectionprcoll=propDao.getAllPropriedades();out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");out.println("<kml xmlns=\"http://earth.google.com/kml/2.0\">");out.println("<Document>");out.println("<ScreenOverlay>");out.println("<name>Absolute Positioning: Top left</name>");out.println("<Icon>");out.println("<href>http://sistema99.com.br/images/logos/logo2.gif</href>");out.println("</Icon>");out.println("<overlayXY x=\"0\" y=\"1\" xunits=\"fraction\" yunits=\"fraction\"/>");out.println("<screenXY x=\"0\" y=\"1\" xunits=\"fraction\" yunits=\"fraction\"/>");out.println("<rotationXY x=\"0\" y=\"0\" xunits=\"fraction\" yunits=\"fraction\"/>");out.println("<size x=\"0.1\" y=\"0.1\" xunits=\"fraction\" yunits=\"fraction\"/>");out.println("</ScreenOverlay>");out.println("<name>Teste de Sistema</name>");out.println("<description>Propriedades</description>");Stringstatus="";for(Iteratoriter=prcoll.iterator();iter.hasNext();){PropriedadeVOholder=(PropriedadeVO)iter.next();if((holder.getLatitude()!=null&&!holder.getLatitude().equals(""))&&(holder.getLongitude()!=null&&!holder.getLongitude().equals(""))){out.println("<Placemark>");out.println("<Style>");out.println("<IconStyle>");out.println("<Icon>");out.println("<href>http://maps.google.com/mapfiles/kml/pal4/icon55.png</href>");out.println("</Icon>");out.println("</IconStyle>");out.println(" </Style>");out.println("<name>"+holder.getIdPropriedade()+"</name>");out.println("<description>");out.println("<![CDATA[");out.println("<b>Propriedade:</b> "+holder.getNome()+"<br/>");out.println("<b>Latitude:</b> "+holder.getLatitudeDecimal()+"<br/>");out.println("<b>Longitude:</b> "+holder.getLongitudeDecimal()+"<br/>");out.println("]]>");out.println("</description>");out.println("<Point>");out.println("<coordinates>"+"-"+holder.getLongitudeDecimal()+",-"+holder.getLatitudeDecimal()+"</coordinates>");out.println("</Point>");out.println("</Placemark>");out.println("</Document>");out.println("</kml>");out.flush();out.close();}}
Basicamente essa classe é um servlet que basicamente pega uma collection de propriedades e gera uma saída em xml.
Ps.: teria alguma outra forma de gerar esse arquivo xml de forma mais otimizada? O servidor tá botando a língua pra fora quando gera esse arquivo.