This week's book giveaway is in the Big Data forum.
We're giving away four copies of Elasticsearch in Action and have Radu Gheorghe & Matthew Lee Hinman on-line!
See this thread for details.
The moose likes Servlets and the fly likes How can I solve this problem? servlet with strong process and Time out. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Elasticsearch in Action this week in the Big Data forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "How can I solve this problem? servlet with strong process and Time out." Watch "How can I solve this problem? servlet with strong process and Time out." New topic

How can I solve this problem? servlet with strong process and Time out.

Fabio Batalha

Joined: Aug 11, 2004
Posts: 6
I made this class that do some stuffs and this stuffs take several minutes to be done so almost every time I run this servlet I got a time out.

What can I do to leavy the strong process running at the server side and at the same time send a message to the client?

import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import de.infinityloop.upcast.UpcastEngine;
import java.util.*;
import javax.xml.transform.Transformer;
//import javax.xml.transform.TransformerConfigurationException;
//import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;

public class UploadFileServlet extends HttpServlet{

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
PrintWriter out = response.getWriter();
boolean isMultipart = FileUpload.isMultipartContent(request);
TransformerFactory tFactory = TransformerFactory.newInstance();

//registering UPCAST LIB
UpcastEngine.setLicense( new FileInputStream(outputFileName("/upcast/upcast.license")) );
//boolean isRegistered = UpcastEngine.setLicense(outputFileName("/upcast/upcast.license"));

if (isMultipart == true)
//Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload();
Transformer transformer = tFactory.newTransformer(new StreamSource(outputFileName("/upcast/xsl/legis.xsl")));

//Set upload parameters

//Parse the request
List items = upload.parseRequest(request);

//Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext())
FileItem item = (FileItem);
if (item.isFormField())
} else
File uploadedFile = new File(outputFileName("/upcast/rtf/file.rtf"));

// Gerando XML do UPCAST
UpcastEngine uc = new UpcastEngine("instanceOne");
uc.setGlobalParameter( "outputDir", outputFileName("/upcast/output") );
String filterID = uc.setImportFilterType( UpcastEngine.kRTFImportType );
uc.setImportFilterParameter( filterID, "IncludeImages", new Boolean( true ) );
uc.importFile( outputFileName("/upcast/rtf/file.rtf") );
filterID = uc.setExportFilterType( UpcastEngine.kXMLExportType );
uc.setExportFilterParameter( filterID, "AllowEmptyCells", new Boolean( false ) );
uc.exportFile( outputFileName("/upcast/input/file_upcast.xml") );

//transformando XML UPCAST
transformer.transform(new StreamSource(outputFileName("/upcast/input/file_upcast.xml")), new StreamResult(new FileOutputStream(outputFileName("/upcast/output/file.xml"))));
out.println("<textarea rows=20 cols=80>temp</textarea>");
catch(FileUploadException ex)
catch(Exception ex)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
doPost( request , response );

public String processFormField(FileItem item){
String name = item.getFieldName();
String value = item.getString();
return "Campo "+ name +" Valor "+ value +"<br/>";

public String processUploadedFile(FileItem item)
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
return "O arquivo "+ fileName +" foi enviado com sucesso.<br/>";

public String outputFileName(String path)
ServletContext context = getServletContext();
String realPath = context.getRealPath(path);
return realPath;
Surya Suravarapu

Joined: Oct 20, 2004
Posts: 10
Can this time consuming process be run as a seperate thread? This will give the control back to the servlet immediately and you can show an appropriate message to the user.

It is sorta covered in the JavaRanch Style Guide.
subject: How can I solve this problem? servlet with strong process and Time out.