0 Replies Latest reply on Aug 10, 2008 1:00 PM by toni

    s:fileupload OutOfMemory

    toni

      Hi,


      I'm using s:fileupload with Seam 1.1.6 to upload files. The problem is that I run into outofmemory, when I try to persist the entity.


      The maximum heap size has been set to 2048 mb. The files are around 120 mb big. Any way how I can configure seam and/or hibernate so that I don't run into OutOfMemory errors?


      The entity bean:


      @Name("pictureArchive")
      @Entity
      
      public class PictureArchive implements Serializable
      {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        long id;
      
        String fileName;
      
        @Lob
        @Basic(fetch = FetchType.LAZY, optional = true)
        byte data[];
      
      
        public long getId()
        {
          return id;
        }
      
        public void setId(long id)
        {
          this.id = id;
        }
      
        public String getFileName()
        {
          return fileName;
        }
      
        public void setFileName(String fileName)
        {
          this.fileName = fileName;
        }
      
        
      
        public byte[] getData()
        {
          return data;
        }
      
        public void setData(byte[] data)
        {
          this.data = data;
        }
      
      }
      
      



      The jsp code:


      <f:view>
      
        <title></title>
      
        <%@ include file="common/top.jsp" %>
      
        <h1></h1>
      
        <h2></h2>
      
        <div id="body">
      
      
          <h:form id="upload" enctype="multipart/form-data">
      
            <s:fileUpload data="#{fileUploadBean.file}" accept="" fileName="#{fileUploadBean.name}"/>
      
        
            <h:commandButton value="Upload" action="#{fileAction.uploadFile}"/>
      
          </h:form>
      
        </div>
      
        <%@ include file="common/bottom.jsp" %>
      </f:view>
      



      The relevant function in the session bean:


        public String uploadFile()
        {
          log.info("Call to uploadFile");
          if (fileUploadBean.getFile() != null)
          {
            log.info("Size: " + fileUploadBean.getFile().length);
      
            PictureArchive pictureArchive = new PictureArchive();
            pictureArchive.setData(fileUploadBean.getFile());    
            pictureArchive.setFileName(fileUploadBean.getName().replaceAll("^.*[\\\\/]", ""));
            entityManager.persist(pictureArchive);
            return "files";
          }
          return "file";
        }