[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