velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Will Glass-Husain" <wgl...@forio.com>
Subject Re: OutOfMemoryException Processing Velocity Template
Date Wed, 11 May 2005 00:18:50 GMT
You've probably already considered this - but do you really *need* 66,000 
rows?

Possibly a simpler solution might be to restructure your appoach to output 
data in smaller chunks.  Just wondering.

I assume you must be exporting to Excel or some other software - it's hard 
for me to think of a use case where a user wants to scroll down 66K rows.

WILL

----- Original Message ----- 
From: "Mike Curwen" <g_dev9xq@globallyboundless.com>
To: "'Velocity Users List'" <velocity-user@jakarta.apache.org>
Sent: Tuesday, May 10, 2005 5:09 PM
Subject: RE: OutOfMemoryException Processing Velocity Template


>From way back in your first email:

"unless I set the tomcat JVM to use a heap size of at least 256M...."

I'm of two minds:

1) Is there something wrong with that size?  What I mean is, the default
heap size is fairly small, considering that most servers worth their name
have *at least* 512MB to spare.  And I'm not trying to make fun of anyone's
server here... I'm just asking: Is this now a bug, or more of a "application
memory sizing/requirements" issue?  p.s.  I *wish* I could run the apps I do
at work on as little as 256.

2) 150+MB just to do html pushing *does* seem extreme.  But on the other
hand, how many HTML pages have 66k+ rows?  I think most clients, never mind
servers, would start to choke on that.  So for sure, there ought to be a way
to "do better".  But I go back to #1 -> the TilesTool seems to 'do 90% of
everyone's jobs', and your job is an edgecase; perhaps not for you, but
certainly for me and any apps I've ever written.




> -----Original Message-----
> From: lawrence@marchex.com [mailto:lawrence@marchex.com]
> Sent: Tuesday, May 10, 2005 6:21 PM
> To: Nathan Bubna
> Cc: Velocity Users List
> Subject: Re: OutOfMemoryException Processing Velocity Template
>
>
> *Gasp*   Ok so I did what you suggested and when I request
> the particular template WITHOUT using tiles, it works.   But
> what now?  We've located that the memory problem is indeed in
> TilesTools (probably cause it uses a BtyeArrayOutputStream),
> but my application is heavily reliant on the use of the TilesTool ...
>
> Suggestions?
>
> -L
>
> P.S.  I actually did get the FileOutputStream method to work
> with Tiles, but on the page with the huge table, it broke.
>
> On Tue, May 10, 2005 at 02:35:14PM -0700, Nathan Bubna wrote:
> > oops.  didn't mean to take this off the list...
> >
> > i'm quite skeptical that you could get the FileOutputStream
> method to
> > work with Tiles.  you might be able extend the
> VelocityViewServlet to
> > do something like that though.  i'm not sure what the best tactic
> > there would be.
> >
> > as for just requesting the particular template and not using Tiles,
> > that should be simple.  the tile being requested is just a template
> > like any other.  the TilesRequestProcessor is just making
> an internal
> > servlet request (forward or include).  all you need to do
> is request
> > the same template of the VVS directly.  in other words, get
> your app
> > running, enter the URL for the template in question (or one
> that does
> > the same thing), rather than the parent template that is
> requesting it
> > as a tile ($tile.foo), and see what happens.
> >
> > On 5/10/05, lawrence@marchex.com <lawrence@marchex.com> wrote:
> > > How would I do that?
> > >
> > > I changed the ImportSupport class to use a
> FileOutputStream, which writes out to a temp file.   Then the
> getString() method reads that temp file.  What happens when I
> do this, however, is when I get to the page with the 66000
> row table, it sits there for about 1 minute until it runs out
> of memory.   I'm thoroughly confused!
> > >
> > > -L
> > >
> > > On Tue, May 10, 2005 at 11:31:17AM -0700, Nathan Bubna wrote:
> > > > hmm.  yeah, i don't know what to do then.  without some good
> > > > profiling to see what is hogging the memory, it's hard to say.
> > > > have you tried just requesting the template in question
> directly
> > > > with the VVS rather than trying to hold it in memory as a tile?
> > > >
> > > > that might at least narrow down the area with the problem.
> > > >
> > > > On 5/10/05, lawrence@marchex.com <lawrence@marchex.com> wrote:
> > > > > Ok I tried that, but unfortunately, it didn't do the
> trick =(.   I verified that getResponseWriter was returning
> an OutputStreamWriter, but it didn't help.   Maybe I'll have
> to change TilesTool to return an FileOutputStream that writes
> to a temp file.... but would that work?   Oh well, anything
> is worth trying now!
> > > > >
> > > > > -L
> > > > >
> > > > > On Tue, May 10, 2005 at 10:44:05AM -0700, Nathan Bubna wrote:
> > > > > > well, maybe you can just override the VVS's
> > > > > > getResponseWriter() method somehow to try calling/using
> > > > > > getOutputStream() on requests first.  but i'm not sure that
> > > > > > will do the trick.  it might, if it's just
> StringWriter that
> > > > > > is the problem and the whole of the tile's content can be
> > > > > > reasonably held in memory with a
> ByteArrayOutputStream (which
> > > > > > is what the ImportResponseWrapper uses to hold the
> tile content if
> > > > > > getOutputStream() is called instead of getWriter()).
> > > > > >
> > > > > > might be worth a shot at least.
> > > > > >
> > > > > > On 5/10/05, lawrence@marchex.com
> <lawrence@marchex.com> wrote:
> > > > > > > Hm, thats interesting.  Thanks for the info.
> What would you suggest I do?   Can I easily override a method
> in VelocityViewServlet that fixes this problem?
> > > > > > >
> > > > > > > -L
> > > > > > >
> > > > > > > On Tue, May 10, 2005 at 10:32:40AM -0700, Nathan Bubna
> > > > > > > wrote:
> > > > > > > > if you are using the TilesTool, note that it extends
> > > > > > > > ImportSupport which uses a custom
> > > > > > > > HttpServletResponseWrapper (an internal class called
> > > > > > > > ImportResponseWrapper).  if the getWriter() method is
> > > > > > > > called on that wrapper instead of
> getOutputStream(), then
> > > > > > > > the wrapper will use a StringWriter to hold the content
> > > > > > > > being imported.  i believe the VelocityViewServlet does
> > > > > > > > indeed try to use getWriter() before trying
> > > > > > > > getOutputStream().  so import requests via the
> TilesTool
> > > > > > > > that are mapped to the VVS, will use a StringWriter.
> > > > > > > >
> > > > > > > > i'm not sure if this helps, but i seem to
> recall mention
> > > > > > > > of the TilesTool early in the thread and that use of a
> > > > > > > > StringWriter seems to be the problem.
> > > > > > > >
> > > > > > > > On 5/10/05, lawrence@marchex.com <lawrence@marchex.com>
> > > > > > > > wrote:
> > > > > > > > > The TufteViewServlet overrides mergeTemplate
> only to print out some various memory statistics.   I'll try
> playing around with setBufferSize(), but I'm close to giving up =\.
> > > > > > > > >
> > > > > > > > > -L
> > > > > > > > >
> > > > > > > > > On Tue, May 10, 2005 at 09:19:33AM +0300, Ilkka Priha
> > > > > > > > > wrote:
> > > > > > > > > > Maybe not the tiles tool, but some other filter or
> > > > > > > > > > processor along the trace may have wrapped the
> > > > > > > > > > response with a caching one. And you have
> > > > > > > > > > TufteViewServlet calling mergeTemplate and actually
> > > > > > > > > > deciding the writer to apply, not
> > > > > > > > > > VelocityViewServlet...
> > > > > > > > > >
> > > > > > > > > > You can set the buffer size of the response
> before any
> > > > > > > > > > output with
> > > > > > > > > > response.setBufferSize() (or check its
> current size with
> > > > > > > > > > response.getBufferSize()). That should set
> the buffer size for
> > > > > > > > > > ServletOutputStream correspondingly.
> > > > > > > > > >
> > > > > > > > > > -- Ilkka
> > > > > > > > > >
> > > > > > > > > > BTW. Are browsers capable of viewing an
> HTML page of
> > > > > > > > > > 100-200 MB in size and how long does it
> take to load
> > > > > > > > > > such a monster through the net?
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > lawrence@marchex.com wrote:
> > > > > > > > > > >The stack trace makes it seem like the
> problem still
> > > > > > > > > > >originates from the VelocityViewServlet,
> and not the
> > > > > > > > > > >TilesTool:
> > > > > > > > > > >
> > > > > > > > > >
> >org.apache.velocity.exception.MethodInvocationExcepti
> > > > > > > > > > >on: Invocation of method 'get' in  class
> > > > > > > > > > >org.apache.velocity.tools.struts.TilesTool
> threw exception class java.lang.OutOfMemoryError : null
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(
> ASTIdentifier.java:193)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.runtime.parser.node.ASTReference.execute(A
> STReference.java:175)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.runtime.parser.node.ASTReference.render(AS
> TReference.java:220)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.runtime.parser.node.SimpleNode.render(Simp
> leNode.java:230)
> > > > > > > > > > >     at
> org.apache.velocity.Template.merge(Template.java:256)
> > > > > > > > > > >     at
> > > > > > > > > > >
> tufte.controller.tools.servlet.TufteViewServlet.mergeTemplate(
> TufteViewServlet.java:106)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.doR
> equest(Unknown Source)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.doG
> et(Unknown Source)
> > > > > > > > > > >     at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> > > > > > > > > > >     at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ApplicationDispatcher.invoke(Applicat
> ionDispatcher.java:684)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ApplicationDispatcher.doForward(Appli
> cationDispatcher.java:432)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ApplicationDispatcher.forward(Applica
> tionDispatcher.java:356)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.action.RequestProcessor.doForward(RequestPro
> cessor.java:1097)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesR
> equestProcessor.java:302)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.tiles.TilesRequestProcessor.processTilesDefi
> nition(TilesRequestProcessor.java:278)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.tiles.TilesRequestProcessor.processForwardCo
> nfig(TilesRequestProcessor.java:341)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.action.RequestProcessor.process(RequestProce
> ssor.java:272)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.action.ActionServlet.process(ActionServlet.j
> ava:1187)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:433)
> > > > > > > > > > >     at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> > > > > > > > > > >     at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(ApplicationFilterChain.java:247)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterChain.java:193)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.java:256)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.java:191)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardContext.invoke(StandardContex
> t.java:2415)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:180)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
> spatcherValve.java:171)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:641)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:172)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:641)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java:174)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.
> java:223)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
> > > > > > > > > > >     at
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSo
> cket.java:562)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679)
> > > > > > > > > > >     at
> > > > > > > > > > >
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:619)
> > > > > > > > > > >     at java.lang.Thread.run(Thread.java:534)
> > > > > > > > > > >
> > > > > > > > > > >So I suppose the question is, how effecient is
> > > > > > > > > > >ServletOutputStream?  When I use an
> FileOutputStream,
> > > > > > > > > > >very little memory is required.
> > > > > > > > > > >
> > > > > > > > > > >-L
> > > > > > > > > > >
> > > > > > > > > > >On Sat, May 07, 2005 at 11:43:03AM +0300,
> Ilkka Priha
> > > > > > > > > > >wrote:
> > > > > > > > > > >
> > > > > > > > > > >>Maybe you are not referring to this memory eating
> > > > > > > > > > >>template directly from VelocityServlet,
> but through
> > > > > > > > > > >>some tool, #include, etc., which uses a nested
> > > > > > > > > > >>StringWriter and not the servlet's
> > > > > > > > > > >>OutputStreamWriter directly. According to
> your first
> > > > > > > > > > >>post, the original oom exception was
> thrown by the
> > > > > > > > > > >>Velocity Struts Tiles tool...
> > > > > > > > > > >>
> > > > > > > > > > >>-- Ilkka
> > > > > > > > > > >>
> > > > > > > > > > >>
> > > > > > > > > > >>lawrence@marchex.com wrote:
> > > > > > > > > > >>
> > > > > > > > > > >>>Ok now I'm confused (suprise, suprise!).
>   I looked at the source for
> > > > > > > > > > >>>VelocityServlet, and mergeTemplate has:
> > > > > > > > > > >>>
> > > > > > > > > > >>>vw = (VelocityWriter) writerPool.get();
> > > > > > > > > > >>>
> > > > > > > > > > >>>if (vw == null)
> > > > > > > > > > >>>{
> > > > > > > > > > >>>  vw = new VelocityWriter(new
> > > > > > > > > > >>>OutputStreamWriter(output, encoding),4 *
> > > > > > > > > > >>>  1024, true);
> > > > > > > > > > >>>}
> > > > > > > > > > >>>else
> > > > > > > > > > >>>{
> > > > > > > > > > >>>  vw.recycle(new
> OutputStreamWriter(output, encoding));
> > > > > > > > > > >>>}
> > > > > > > > > > >>>template.merge(context, vw);
> > > > > > > > > > >>>
> > > > > > > > > > >>>===
> > > > > > > > > > >>>
> > > > > > > > > > >>>So the VelocityServlet DOES use
> OutputStreamWriter
> > > > > > > > > > >>>already ... so then why does it still utilize so
> > > > > > > > > > >>>much memory?
> > > > > > > > > > >>>
> > > > > > > > > > >>>-L
> > > > > > > > > > >>>
> > > > > > > > > > >>>On Fri, May 06, 2005 at 02:02:07PM -0700,
> > > > > > > > > > >>>lawrence@marchex.com wrote:
> > > > > > > > > > >>>
> > > > > > > > > > >>>
> > > > > > > > > > >>>>Alright, I changed the Writer to be:
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>OutputStreamWriter w = new
> OutputStreamWriter(new
> > > > > > > > > > >>>>FileOutputStream("test.html"));
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>And this fixes the memory problem.
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>However, my application is running
> Velocity as a
> > > > > > > > > > >>>>servlet, how should I extend the
> VelocityServlet
> > > > > > > > > > >>>>to use an OutputStreamWriter intead of a
> > > > > > > > > > >>>>StringWriter?  Should I post a different email
> > > > > > > > > > >>>>thread about this?
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>-L
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>On Fri, May 06, 2005 at 01:59:19PM -0700, David
> > > > > > > > > > >>>>You wrote:
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>
> > > > > > > > > > >>>>>Well, Open a file, use a FileWriter.
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>David
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>-----Original Message-----
> > > > > > > > > > >>>>>From: lawrence@marchex.com
> > > > > > > > > > >>>>>[mailto:lawrence@marchex.com]
> > > > > > > > > > >>>>>Sent: Friday, May 06, 2005 1:48 PM
> > > > > > > > > > >>>>>To: Velocity Users List
> > > > > > > > > > >>>>>Subject: Re: OutOfMemoryException
> Processing Velocity Template
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>I printed out the available memory before and
> > > > > > > > > > >>>>>after I call
> > > > > > > > > > >>>>>"mergeTemplate":
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>Free memory before merge: 217393352
> > > > > > > > > > >>>>>Free memory after merge: 16271392
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>so I would assume the StringWriter is
> approximately 200MB after the
> > > > > > > > > > >>>>>merge.   What should I use/do instead?
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>-Lawrence
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>On Fri, May 06, 2005 at 01:43:50PM
> -0700, David
> > > > > > > > > > >>>>>You wrote:
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>Why do you use StringWriter? That is
> cached in
> > > > > > > > > > >>>>>>the memory. How big is the StringWriter after
> > > > > > > > > > >>>>>>the merge?
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>David
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>-----Original Message-----
> > > > > > > > > > >>>>>>From: lawrence@marchex.com
> > > > > > > > > > >>>>>>[mailto:lawrence@marchex.com]
> > > > > > > > > > >>>>>>Sent: Friday, May 06, 2005 1:22 PM
> > > > > > > > > > >>>>>>To: Velocity Users List
> > > > > > > > > > >>>>>>Subject: Re: OutOfMemoryException
> Processing Velocity Template
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>Alright, I ran this little piece of code:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>public static void main( String
> args[] ) throws
> > > > > > > > > > >>>>>>Exception  {
> > > > > > > > > > >>>>>>     /* first, we init the runtime engine.
> > > > > > > > > > >>>>>>Defaults are fine. */
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     Velocity.init();
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     /* lets make a Context and put
> data into it
> > > > > > > > > > >>>>>> */
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     VelocityContext context = new
> > > > > > > > > > >>>>>> VelocityContext();
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     List results =
> ReportBean.runLargeReport();
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     context.put("List", results);
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     /* lets render a template */
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     StringWriter w = new StringWriter();
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> Velocity.mergeTemplate("/myfile.vm", context, w );
> > > > > > > > > > >>>>>>     System.out.println(" template : " + w );
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>     /* lets make our own string to
> render */ }
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>results is a List of 66000 objects
> and requires about 8megs of memory.
> > > > > > > > > > >>>>>>The "mergeTemplate" requires at least
> 230 MB of memory.   Any
> > > > > > > > > > >>>>>>suggestions?
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>-L
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>On Fri, May 06, 2005 at 11:53:30AM
> -0700, jian
> > > > > > > > > > >>>>>>chen wrote:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>Hi,
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>I guess the writer Ilkka talked
> about is when
> > > > > > > > > > >>>>>>>using Velocity as a standalone
> template engine.
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>Right now I don't have a good clue,
> could you
> > > > > > > > > > >>>>>>>run Velocity as a standalone template engine
> > > > > > > > > > >>>>>>>and render the page to see if there
> is a huge
> > > > > > > > > > >>>>>>>memory usage?
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>Cheers,
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>Jian
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>On 5/6/05, lawrence@marchex.com
> > > > > > > > > > >>>>>>><lawrence@marchex.com> wrote:
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>>Sorry, I'm not sure what you mean by what
> > > > > > > > > > >>>>>>>>"kind of writer" I'm
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>using.   Where would I find out?
> How would I change this (to maybe a
> > > > > > > > > > >>>>>>StringBuffer writer?)
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>Also, each column contains a String
> that is at
> > > > > > > > > > >>>>>>>>most, 200
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>characters,
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>most are closer to 10-20.   There are
> a total of 10 columns.
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>Thanks.
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>-Lawrence
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>On Fri, May 06, 2005 at 09:11:13PM +0300,
> > > > > > > > > > >>>>>>>>Ilkka Priha wrote:
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>>What kind of writer are you using and how
> > > > > > > > > > >>>>>>>>>long are the items? 66
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>000 HTML
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>table rows with 5 numeric columns consumes
> > > > > > > > > > >>>>>>>>>about 32 MB when
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>buffered into a
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>string writer. If the items are longer, it
> > > > > > > > > > >>>>>>>>>takes much more
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>memory.
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>>>>-- Ilkka
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>lawrence@marchex.com wrote:
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>>I tried putting static HTML in
> the #foreach
> > > > > > > > > > >>>>>>>>>>loop, same problem.
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>Then I
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>tried setting the large list as a "local"
> > > > > > > > > > >>>>>>>>>>varible:
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>#set ($localList = $List)
> #foreach($row in
> > > > > > > > > > >>>>>>>>>>$localList) ...
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>but that didnt help either.   I
> don't see why velocity should
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>use
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>250+ MB
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>of memory iterating over a list ~8MB in
> > > > > > > > > > >>>>>>>>>>size... -L
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>On Thu, May 05, 2005 at 02:56:28PM -0700,
> > > > > > > > > > >>>>>>>>>>jian chen wrote:
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>Well, I don't have a good clue now.
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>What about do the debugging step
> by step,
> > > > > > > > > > >>>>>>>>>>>i.e., use just
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>static
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>html
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>in your #foreach loop? Will that blow up
> > > > > > > > > > >>>>>>>>>>>the memory?
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>Cheers,
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>Jian
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>On 5/5/05, lawrence@marchex.com
> > > > > > > > > > >>>>>>>>>>><lawrence@marchex.com> wrote:
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>Thanks for the suggestion.   I
> tried putting that, along with
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>file.resource.loader.cache = true
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>in my velocity.properties file.
>   Both did not work.   Any
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>other
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>suggestions?
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>Thanks!
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>-L
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>On Thu, May 05, 2005 at
> 02:11:28PM -0700,
> > > > > > > > > > >>>>>>>>>>>>jian chen wrote:
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>Hi,
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>This maybe because you haven't
> turned on
> > > > > > > > > > >>>>>>>>>>>>>template caching. I
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>had
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>similar problem before, and even if I
> > > > > > > > > > >>>>>>>>>>>>>only used
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>evaluate(...)
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>method
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>and load the template using my
> own java
> > > > > > > > > > >>>>>>>>>>>>>program, it happened
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>when the
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>for loop is lot of iterations.
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>The bottom line for my problem
> is I need
> > > > > > > > > > >>>>>>>>>>>>>to turn on template
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>caching,
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>so, velocity will not try to cache the
> > > > > > > > > > >>>>>>>>>>>>>objects it parsed
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>during each
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>time of the iteration.
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>I did:
> > > > > > > > > >
> >>>>>>>>>>>>>ri.setProperty(RuntimeConstants.FILE_RESO
> > > > > > > > > > >>>>>>>>>>>>>URCE_LOADER_CACHE,
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>"true");
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>where ri is a runtime instance.
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>Will this fix your issue?
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>Cheers,
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>Jian
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>On 5/5/05, lawrence@marchex.com
> > > > > > > > > > >>>>>>>>>>>>><lawrence@marchex.com>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>wrote:
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>>>>>>>>>I am getting an OutOfMemoryException:
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > >
> >>>>>>>>>>>>>>org.apache.velocity.exception.MethodInvo
> > > > > > > > > > >>>>>>>>>>>>>>cationException:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>Invocation of
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>method 'get' in  class
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>org.apache.velocity.tools.struts.TilesTool
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>threw exception class
> > > > > > > > > > >>>>>>>>>>>>>>java.lang.OutOfMemoryError : null
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>when I am creating a large velocity
> > > > > > > > > > >>>>>>>>>>>>>>file.  The vm file
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>itself
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>is
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>fairly small, but this piece
> of velocity
> > > > > > > > > > >>>>>>>>>>>>>>is causing the
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>exception:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>#foreach($row in $List)
> > > > > > > > > > >>>>>>>>>>>>>><tr>
> > > > > > > > > > >>>>>>>>>>>>>><td height="20"
> > > > > > > > > > >>>>>>>>>>>>>>class="tbltxt">$!row.item1</td> <td
> > > > > > > > > > >>>>>>>>>>>>>>class="tbltxt">$!row.item2</td> <td
> > > > > > > > > > >>>>>>>>>>>>>>class="tbltxt">$!row.item3</td> <td
> > > > > > > > > > >>>>>>>>>>>>>>class="tbltxt">$!row.item4</td> <td
> > > > > > > > > >
> >>>>>>>>>>>>>>class="tbltxt">$!number.format('currency
> > > > > > > > > > >>>>>>>>>>>>>>',
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>$!row.item5)</td>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>></tr>
> > > > > > > > > > >>>>>>>>>>>>>>#end
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>List is a list of relatively small
> > > > > > > > > > >>>>>>>>>>>>>>objects (5-6 Strings, a
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>couple of
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>BigDecimals), but the List itself
> > > > > > > > > > >>>>>>>>>>>>>>contains approximately
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>66,000
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>entries.  Unfortunately, unless I set
> > > > > > > > > > >>>>>>>>>>>>>>the tomcat JVM to use
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>a
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>heap
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>size of at least 256M, this velocity
> > > > > > > > > > >>>>>>>>>>>>>>template throws an
> OutOfMemoryException
> > > > > > > > > > >>>>>>>>>>>>>>when it is being processed.
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>Any suggestions?
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>Thanks.
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>-L
> > > > > > > > > > >>>>>>>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > >
> >>>>>>>>>>--------------------------------------------
> > > > > > > > > > >>>>>>>>>>-----------------------
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>--
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>>>>---------------------------------------------
> > > > > > > > > > >>>>>>>>>-----------------------
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>-
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>>>----------------------------------------------
> > > > > > > > > > >>>>>>>>-----------------------
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>
> > > > > > > > > > >>>>>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>>-----------------------------------------------
> > > > > > > > > > >>>>>>>----------------------
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>>-----------------------------------------------
> > > > > > > > > > >>>>>>>----------------------
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>
> > > > > > > > > > >>>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>>.
> > > > > > > > > > >>>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > > >>>>>>>>>
> > > > > > > > > >
> >>>>>>------------------------------------------------
> > > > > > > > > > >>>>>>---------------------
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>------------------------------------------------
> > > > > > > > > > >>>>>>---------------------
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>-------------------------------------------------
> > > > > > > > > > >>>>>--------------------
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>>>To unsubscribe, e-mail:
> > > > > > > > > > >>>>>>>velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>>For additional commands, e-mail:
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > >
> >>>>>>------------------------------------------------
> > > > > > > > > > >>>>>>---------------------
> > > > > > > > > > >>>>>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>>
> > > > > > > > > > >>>>>>
> > > > > > > > > >
> >>>>>>------------------------------------------------
> > > > > > > > > > >>>>>>---------------------
> > > > > > > > > > >>>>>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>
> > > > > > > > > >
> >>>>>-------------------------------------------------
> > > > > > > > > > >>>>>--------------------
> > > > > > > > > > >>>>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>>
> > > > > > > > > > >>>>>
> > > > > > > > > >
> >>>>>-------------------------------------------------
> > > > > > > > > > >>>>>--------------------
> > > > > > > > > > >>>>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>>
> > > > > > > > > >
> >>>>--------------------------------------------------
> > > > > > > > > > >>>>-------------------
> > > > > > > > > > >>>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>
> > > > > > > > > > >>>
> > > > > > > > > >
> >>>---------------------------------------------------
> > > > > > > > > > >>>------------------
> > > > > > > > > > >>>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >>>
> > > > > > > > > > >>>.
> > > > > > > > > > >>>
> > > > > > > > > > >>
> > > > > > > > > > >>
> > > > > > > > > >
> >>----------------------------------------------------
> > > > > > > > > > >>-----------------
> > > > > > > > > > >>To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >>For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> >-----------------------------------------------------
> > > > > > > > > > >----------------
> > > > > > > > > > >To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > >For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > > > >
> > > > > > > > > > >.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> ------------------------------------------------------
> > > > > > > > > > ---------------
> > > > > > > > > > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> --------------------------------------------------------
> > > > > > > > > -------------
> > > > > > > > > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> ----------------------------------------------------------
> > > > > > > > -----------
> > > > > > > > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> ------------------------------------------------------------
> > > > > > > ---------
> > > > > > > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> --------------------------------------------------------------
> > > > > > -------
> > > > > > To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> > > > >
> > >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Mime
View raw message