You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Shane Petroff <sh...@mayet.ca> on 2007/12/05 01:50:36 UTC

File download and out of memory

Hello,

I'm having a problem with a link used to download a "large" file. I say 
large in quotation because by modern standards, the 5MB file I'm talking 
about is tiny; I need to be able to handle at least 20MB. The same code 
works for small files (<25K), but dies on larger ones. Hopefully it is a 
configuration issue. On the jsp, there is a commandLink bound to the 
"onDownload" action pasted below. The only config I can imagine that 
might come into play is configuring the extensions filter itself. I've 
specified UTF-8 encodings by default since several pages must support 
extended characters. I'm currently using MyFaces core 1.1.5, Tomahawk 
1.1.6 and Tomcat 5.5.23

The stack trace is:
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at 
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at 
java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
    at java.lang.StringBuffer.append(StringBuffer.java:320)
    at 
org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54)
(full stack trace below)

Extension Filter config:
    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>maxFileSize</param-name>
            <param-value>90m</param-value>
        </init-param>
        <init-param>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>90m</param-value>
        </init-param>
    </filter>

Action code:
    public String onDownload()
    {
        String rtn = Constants.ERROR_OUTCOME;
        FileInputStream fis = null;
        OutputStream os = null;
        try
        {
            File file = buildFile(); // creates a 5MB file. If I hack 
this to return a 25K file, it all works well

            FacesContext fc = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) 
fc.getExternalContext().getResponse();
            response.setHeader("Content-disposition", "attachment; 
filename=" + file.getName());
            response.setContentType("application/xml");

            fis = new FileInputStream(file);
            os = new BufferedOutputStream(response.getOutputStream());

            int read;
            while( (read = fis.read()) != -1 )
                os.write(read);

            os.flush();
            fc.responseComplete();
            rtn = Constants.SUCCESS_OUTCOME;
        }
        catch ( Exception e )
        {
            logException( MessageConstants.LOADING_ERROR_PREFIX + "XML", 
e );
        }
        finally
        {
            try
            {
                os.close();
                fis.close();
            }
            catch(Exception ignored) { /* we don't care about NPE's 
either */ }
        }

        return rtn;
    }

Full Stack Trace:
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at 
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at 
java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
    at java.lang.StringBuffer.append(StringBuffer.java:320)
    at 
org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54)
    at 
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl.write(HtmlResponseWriterImpl.java:567)
    at 
org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeResponse(DefaultAddResource.java:847)
    at 
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:162)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
    at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at 
ca.mayet.SessionTimeoutRedirectFilter.doFilter(SessionTimeoutRedirectFilter.java:78)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:619)

-- 
Shane


Re: File download and out of memory

Posted by fischman_98 <mf...@powerconsultantsinc.com>.
To All:

So far I've found that using the old fashioned servlet is the only (&
Quickest as far as download speed) way to go.

I would love to see a managedBean solution if someone comes up with one.

I am going to attempt the phaseListener approach (
http://cagataycivici.wordpress.com/2006/02/16/phaselistener_renders_an_image_no/
Phase Listener Approach ) and we'll see.

But servlet works for me.

Matt



Shane Petroff wrote:
> 
> Hello,
> 
> I'm having a problem with a link used to download a "large" file. I say 
> large in quotation because by modern standards, the 5MB file I'm talking 
> about is tiny; I need to be able to handle at least 20MB. The same code 
> works for small files (<25K), but dies on larger ones. Hopefully it is a 
> configuration issue. On the jsp, there is a commandLink bound to the 
> "onDownload" action pasted below. The only config I can imagine that 
> might come into play is configuring the extensions filter itself. I've 
> specified UTF-8 encodings by default since several pages must support 
> extended characters. I'm currently using MyFaces core 1.1.5, Tomahawk 
> 1.1.6 and Tomcat 5.5.23
> 
> The stack trace is:
> java.lang.OutOfMemoryError: Java heap space
>     at java.util.Arrays.copyOf(Arrays.java:2882)
>     at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
>     at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>     at java.lang.StringBuffer.append(StringBuffer.java:320)
>     at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54)
> (full stack trace below)
> 
> Extension Filter config:
>     <filter>
>         <filter-name>MyFacesExtensionsFilter</filter-name>
>         
> <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
>         <init-param>
>             <param-name>maxFileSize</param-name>
>             <param-value>90m</param-value>
>         </init-param>
>         <init-param>
>             <param-name>uploadMaxFileSize</param-name>
>             <param-value>90m</param-value>
>         </init-param>
>     </filter>
> 
> Action code:
>     public String onDownload()
>     {
>         String rtn = Constants.ERROR_OUTCOME;
>         FileInputStream fis = null;
>         OutputStream os = null;
>         try
>         {
>             File file = buildFile(); // creates a 5MB file. If I hack 
> this to return a 25K file, it all works well
> 
>             FacesContext fc = FacesContext.getCurrentInstance();
>             HttpServletResponse response = (HttpServletResponse) 
> fc.getExternalContext().getResponse();
>             response.setHeader("Content-disposition", "attachment; 
> filename=" + file.getName());
>             response.setContentType("application/xml");
> 
>             fis = new FileInputStream(file);
>             os = new BufferedOutputStream(response.getOutputStream());
> 
>             int read;
>             while( (read = fis.read()) != -1 )
>                 os.write(read);
> 
>             os.flush();
>             fc.responseComplete();
>             rtn = Constants.SUCCESS_OUTCOME;
>         }
>         catch ( Exception e )
>         {
>             logException( MessageConstants.LOADING_ERROR_PREFIX + "XML", 
> e );
>         }
>         finally
>         {
>             try
>             {
>                 os.close();
>                 fis.close();
>             }
>             catch(Exception ignored) { /* we don't care about NPE's 
> either */ }
>         }
> 
>         return rtn;
>     }
> 
> Full Stack Trace:
> java.lang.OutOfMemoryError: Java heap space
>     at java.util.Arrays.copyOf(Arrays.java:2882)
>     at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
>     at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>     at java.lang.StringBuffer.append(StringBuffer.java:320)
>     at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54)
>     at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl.write(HtmlResponseWriterImpl.java:567)
>     at 
> org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeResponse(DefaultAddResource.java:847)
>     at 
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:162)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>     at 
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
>     at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>     at 
> ca.mayet.SessionTimeoutRedirectFilter.doFilter(SessionTimeoutRedirectFilter.java:78)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>     at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>     at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
>     at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>     at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>     at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
>     at java.lang.Thread.run(Thread.java:619)
> 
> -- 
> Shane
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/File-download-and-out-of-memory-tp14163021p25754734.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.


RE: File download and out of memory

Posted by Mark Millman <ma...@mizar.com>.
You need to configure the web.xml file to increase the maximum upload file
size.  I'm not sure where this is documented in Trinidad, perhaps someone
else can tell us.  I sent Shane the upload file page from the old ADF
Developers Guide.

Mark

mark.millman@mizar.com | www.mizar.com | (360) 945-2643


-----Original Message-----
From: Shane Petroff [mailto:shane@mayet.ca] 
Sent: Monday, December 10, 2007 9:25 AM
To: MyFaces Discussion
Subject: Re: File download and out of memory


Anyone have any guesses even? Is there a better technique? (the code was 
almost copied/pasted out of the wiki) I had wondered if the buildFile() 
method was leaving some resources open. Since I don't write a lot of I/O 
code (and since I wanted to convince myself of my own sanity), it is 
currently stubbed out to return a handle to a pre-existing file. I've 
stopped declaring a UTF-8 encoding, although UnicodeEncoder is still 
invoked. There doesn't appear to be a lot I can change with this. Should 
I just drop Tomahawk and the ExtensionsFilter altogether and try 
Trinidad? (is there any documentation on converting over)

Shane

Shane Petroff wrote:
> Hello,
>
> I'm having a problem with a link used to download a "large" file. I 
> say large in quotation because by modern standards, the 5MB file I'm 
> talking about is tiny; I need to be able to handle at least 20MB. The 
> same code works for small files (<25K), but dies on larger ones. 
> Hopefully it is a configuration issue. On the jsp, there is a 
> commandLink bound to the "onDownload" action pasted below. The only 
> config I can imagine that might come into play is configuring the 
> extensions filter itself. I've specified UTF-8 encodings by default 
> since several pages must support extended characters. I'm currently 
> using MyFaces core 1.1.5, Tomahawk 1.1.6 and Tomcat 5.5.23
>
> The stack trace is:
> java.lang.OutOfMemoryError: Java heap space
>    at java.util.Arrays.copyOf(Arrays.java:2882)
>    at 
>
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:10
0) 
>
>    at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>    at java.lang.StringBuffer.append(StringBuffer.java:320)
>    at 
>
org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode
(UnicodeEncoder.java:54) 
>
> (full stack trace below)
>
> Extension Filter config:
>    <filter>
>        <filter-name>MyFacesExtensionsFilter</filter-name>
>        
>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-clas
s> 
>
>        <init-param>
>            <param-name>maxFileSize</param-name>
>            <param-value>90m</param-value>
>        </init-param>
>        <init-param>
>            <param-name>uploadMaxFileSize</param-name>
>            <param-value>90m</param-value>
>        </init-param>
>    </filter>
>
> Action code:
>    public String onDownload()
>    {
>        String rtn = Constants.ERROR_OUTCOME;
>        FileInputStream fis = null;
>        OutputStream os = null;
>        try
>        {
>            File file = buildFile(); // creates a 5MB file. If I hack 
> this to return a 25K file, it all works well
>
>            FacesContext fc = FacesContext.getCurrentInstance();
>            HttpServletResponse response = (HttpServletResponse) 
> fc.getExternalContext().getResponse();
>            response.setHeader("Content-disposition", "attachment; 
> filename=" + file.getName());
>            response.setContentType("application/xml");
>
>            fis = new FileInputStream(file);
>            os = new BufferedOutputStream(response.getOutputStream());
>
>            int read;
>            while( (read = fis.read()) != -1 )
>                os.write(read);
>
>            os.flush();
>            fc.responseComplete();
>            rtn = Constants.SUCCESS_OUTCOME;
>        }
>        catch ( Exception e )
>        {
>            logException( MessageConstants.LOADING_ERROR_PREFIX + 
> "XML", e );
>        }
>        finally
>        {
>            try
>            {
>                os.close();
>                fis.close();
>            }
>            catch(Exception ignored) { /* we don't care about NPE's 
> either */ }
>        }
>
>        return rtn;
>    }
>
> Full Stack Trace:
> java.lang.OutOfMemoryError: Java heap space
>    at java.util.Arrays.copyOf(Arrays.java:2882)
>    at 
>
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:10
0) 
>
>    at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>    at java.lang.StringBuffer.append(StringBuffer.java:320)
>    at 
>
org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode
(UnicodeEncoder.java:54) 
>
>    at 
>
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl.wri
te(HtmlResponseWriterImpl.java:567) 
>
>    at 
>
org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeResponse(Defa
ultAddResource.java:847) 
>
>    at 
>
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.
java:162) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:215) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:188) 
>
>    at 
>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterI
nternal(OpenSessionInViewFilter.java:173) 
>
>    at 
>
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF
ilter.java:77) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:215) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:188) 
>
>    at 
>
ca.mayet.SessionTimeoutRedirectFilter.doFilter(SessionTimeoutRedirectFilter.
java:78) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:215) 
>
>    at 
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:188) 
>
>    at 
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:210) 
>
>    at 
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:174) 
>
>    at 
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127
) 
>
>    at 
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117
) 
>
>    at 
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:108) 
>
>    at 
>
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 
>
>    at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)

>
>    at 
>
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processC
onnection(Http11BaseProtocol.java:665) 
>
>    at 
>
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.jav
a:528) 
>
>    at 
>
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWo
rkerThread.java:81) 
>
>    at 
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:685) 
>
>    at java.lang.Thread.run(Thread.java:619)
>


-- 
Shane


Re: File download and out of memory

Posted by Shane Petroff <sh...@mayet.ca>.
Anyone have any guesses even? Is there a better technique? (the code was 
almost copied/pasted out of the wiki) I had wondered if the buildFile() 
method was leaving some resources open. Since I don't write a lot of I/O 
code (and since I wanted to convince myself of my own sanity), it is 
currently stubbed out to return a handle to a pre-existing file. I've 
stopped declaring a UTF-8 encoding, although UnicodeEncoder is still 
invoked. There doesn't appear to be a lot I can change with this. Should 
I just drop Tomahawk and the ExtensionsFilter altogether and try 
Trinidad? (is there any documentation on converting over)

Shane

Shane Petroff wrote:
> Hello,
>
> I'm having a problem with a link used to download a "large" file. I 
> say large in quotation because by modern standards, the 5MB file I'm 
> talking about is tiny; I need to be able to handle at least 20MB. The 
> same code works for small files (<25K), but dies on larger ones. 
> Hopefully it is a configuration issue. On the jsp, there is a 
> commandLink bound to the "onDownload" action pasted below. The only 
> config I can imagine that might come into play is configuring the 
> extensions filter itself. I've specified UTF-8 encodings by default 
> since several pages must support extended characters. I'm currently 
> using MyFaces core 1.1.5, Tomahawk 1.1.6 and Tomcat 5.5.23
>
> The stack trace is:
> java.lang.OutOfMemoryError: Java heap space
>    at java.util.Arrays.copyOf(Arrays.java:2882)
>    at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 
>
>    at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>    at java.lang.StringBuffer.append(StringBuffer.java:320)
>    at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54) 
>
> (full stack trace below)
>
> Extension Filter config:
>    <filter>
>        <filter-name>MyFacesExtensionsFilter</filter-name>
>        
> <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
>
>        <init-param>
>            <param-name>maxFileSize</param-name>
>            <param-value>90m</param-value>
>        </init-param>
>        <init-param>
>            <param-name>uploadMaxFileSize</param-name>
>            <param-value>90m</param-value>
>        </init-param>
>    </filter>
>
> Action code:
>    public String onDownload()
>    {
>        String rtn = Constants.ERROR_OUTCOME;
>        FileInputStream fis = null;
>        OutputStream os = null;
>        try
>        {
>            File file = buildFile(); // creates a 5MB file. If I hack 
> this to return a 25K file, it all works well
>
>            FacesContext fc = FacesContext.getCurrentInstance();
>            HttpServletResponse response = (HttpServletResponse) 
> fc.getExternalContext().getResponse();
>            response.setHeader("Content-disposition", "attachment; 
> filename=" + file.getName());
>            response.setContentType("application/xml");
>
>            fis = new FileInputStream(file);
>            os = new BufferedOutputStream(response.getOutputStream());
>
>            int read;
>            while( (read = fis.read()) != -1 )
>                os.write(read);
>
>            os.flush();
>            fc.responseComplete();
>            rtn = Constants.SUCCESS_OUTCOME;
>        }
>        catch ( Exception e )
>        {
>            logException( MessageConstants.LOADING_ERROR_PREFIX + 
> "XML", e );
>        }
>        finally
>        {
>            try
>            {
>                os.close();
>                fis.close();
>            }
>            catch(Exception ignored) { /* we don't care about NPE's 
> either */ }
>        }
>
>        return rtn;
>    }
>
> Full Stack Trace:
> java.lang.OutOfMemoryError: Java heap space
>    at java.util.Arrays.copyOf(Arrays.java:2882)
>    at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 
>
>    at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
>    at java.lang.StringBuffer.append(StringBuffer.java:320)
>    at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.util.UnicodeEncoder.encode(UnicodeEncoder.java:54) 
>
>    at 
> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl.write(HtmlResponseWriterImpl.java:567) 
>
>    at 
> org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeResponse(DefaultAddResource.java:847) 
>
>    at 
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:162) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
>
>    at 
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173) 
>
>    at 
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
>
>    at 
> ca.mayet.SessionTimeoutRedirectFilter.doFilter(SessionTimeoutRedirectFilter.java:78) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 
>
>    at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
>
>    at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) 
>
>    at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 
>
>    at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
>
>    at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
>
>    at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
>
>    at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) 
>
>    at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) 
>
>    at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
>
>    at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
>
>    at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
>
>    at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) 
>
>    at java.lang.Thread.run(Thread.java:619)
>


-- 
Shane