[jboss-user] [JBoss Seam] - JBoss Seam problem with download file big file

GregTk do-not-reply at jboss.com
Sat Jan 26 06:15:19 EST 2008


I try modify File Servlet from wiki example. Because I need get file from filesystem. My code look:

/*
  |  * To change this template, choose Tools | Templates
  |  * and open the template in the editor.
  |  */
  | package ru.fuckorama.servlets;
  | 
  | import javax.persistence.EntityManager;
  | import javax.persistence.NoResultException;
  | import javax.servlet.ServletException;
  | import javax.servlet.http.HttpServlet;
  | import javax.servlet.http.HttpServletRequest;
  | import javax.servlet.http.HttpServletResponse;
  | import javax.transaction.UserTransaction;
  | import java.io.ByteArrayOutputStream;
  | import java.io.DataInputStream;
  | import java.io.File;
  | import java.io.FileInputStream;
  | import java.io.IOException;
  | import java.io.InputStream;
  | import java.io.OutputStream;
  | 
  | public class FileServlet extends HttpServlet {
  | 
  |     private static final String DOWNLOAD_PATH = "/download.seam";
  |     private byte[] fileNotFoundImage;
  | 
  |     public FileServlet() {
  |         InputStream in = getClass().getResourceAsStream("/img/filenotfound.png");
  |         if (in != null) {
  |             ByteArrayOutputStream out = new ByteArrayOutputStream();
  |             byte[] buffer = new byte[512];
  |             try {
  |                 int read = in.read(buffer);
  |                 while (read != -1) {
  |                     out.write(buffer, 0, read);
  |                     read = in.read(buffer);
  |                 }
  | 
  |                 fileNotFoundImage = out.toByteArray();
  |             } catch (IOException e) {
  |             }
  |         }
  | 
  |     }
  | 
  |     @Override
  |     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  |             throws ServletException, IOException {
  |         File file = null;
  |         int length = 0;
  |         if (DOWNLOAD_PATH.equals(request.getPathInfo())) {
  |             UserTransaction userTx = null;
  |             boolean startedTx = false;
  |             try {
  | 
  |                 userTx = (UserTransaction) org.jboss.seam.Component.getInstance("org.jboss.seam.transaction.transaction");
  |                 if (userTx.getStatus() != javax.transaction.Status.STATUS_ACTIVE) {
  |                     startedTx = true;
  |                     userTx.begin();
  |                 }
  | 
  |                 String id = request.getParameter("fileId");
  |                 file = new File("c:/arch/" + id);
  |                 length = (int) file.length();
  | 
  |                 if (startedTx) {
  |                     userTx.commit();
  |                 }
  |             } catch (Exception ex) {
  |                 try {
  |                     if (startedTx) {
  |                         userTx.rollback();
  |                     }
  |                 } catch (Exception rbEx) {
  |                     rbEx.printStackTrace();
  |                 }
  |                 throw new RuntimeException(ex);
  |             }
  |             response.setContentType("application/pdf");
  |             
  |             response.setHeader("Content-Disposition", "attachement; filename=\"" + file.getName() + "\"");
  | 
  |             FileInputStream fileToDownload = new FileInputStream(file);
  |             response.setContentLength(fileToDownload.available());
  |             int c;
  |             while ((c = fileToDownload.read()) != -1) {
  |                 response.getOutputStream().write(c);
  |             }
  | 
  | 
  |             response.getOutputStream().flush();
  |         }
  |     }
  | }
  | 

When I ask from server big file(100mb), I get error with OutMemoryHeap on Jboss server. Please somebody help me..... 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4123734#4123734

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4123734



More information about the jboss-user mailing list