Tomcat e tempo de execução

Pessoal,

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.

Valeu.

Hm, o servidor nao deve interromper o processo…

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.

Aí vai:

package org.pec.servlet;

import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import org.pec.dao.PropriedadeDao;


public class GeraKml extends HttpServlet {

	public void doGet(HttpServletRequest req, // This provides information sent by the browser
			HttpServletResponse res // This is used to send information back to the browser
	) throws ServletException, // General exception that should be thrown if there
			// is a unrecoverable error in the Servlet
			IOException

	{
		// Set the MIME type for the information being sent to the browser.
		// In this case, we are going to send back HTML
			
		String action = req.getParameter("do");
		if (action==null)
			action = "all";

		ServletOutputStream out = 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");   
	
		
		PropriedadeDao propDao = new PropriedadeDao();
				
		HttpSession session = req.getSession();
									
		Collection prcoll = 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>");
		
		String status = "";
				
		for (Iterator iter = prcoll.iterator();iter.hasNext();){
			
			
			PropriedadeVO holder = (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.