Thanks Rashmi, Zack, and Pid
Sorry it's my fault. <%@ include file="request.getParameter("f") %>
should not be compiled successfully. I fisrt tested <jsp:include
page../>, it works, TOMCAT translated and generated the .java and
.class file, then I just modified the same jsp file with <%@ ... %>,
TOMCAT compiled it failed. TOMCAT deleted the .java file, but kept the
.class. When I load tested the URL again, Some requests will get 500
error, while most are still get the right response!

Now I understood the two include difference. Thanks again.

Thx, Xuekun

On 1/15/07, Pid <[EMAIL PROTECTED]> wrote:
Firstly, all directives of the following form are executed at compile time:

<%@ ... %>

This means that URL request parameters are not available (yet) to the
JSP.  If the OP was using an include file directive containing the
string 'request.getParameter("f")' it is unlikely that it ever worked as
expected.

The JSTL approach below is likely to work - though I can't think of a
good or safe reason for allowing JSPs to load file system paths.
(if you're on a unix-like system, try loading '/etc/passwd')



Secondly, <jsp:include ... > operates at *request time* and may
therefore be more pertinent to the case here.  OP should google for 'JSP
directive tutorials', the top result was enlightening when I checked.



Lastly, the OP should report on which tool (if any) he was using to load
test the URL.  It may simply be the case (assuming the above error is
corrected) that the excessive load caused the machine to run out of
memory.

The normal approach is to examine the logs to determine the source of
the 500 error, the list will likely provide more advice on receipt of
this information.


p



Rashmi Rubdi wrote:
> Zack,
>
> I don't think it's the include directive alone causing a memory error. I'm 
guessing that there might be a lot of processes in his application running on 
Tomcat, eventually causing an out of memory error or may be the system does not 
have minimum required memory to run Tomcat.
>
> With Tomcat 5.5, and about 2GB RAM I'm not getting an OutOfMemory error while 
running 3 applications simultaneously on Tomcat, when I tried his example of 
include directives, I got the error on the screen and it was logged in Tomcat's 
logs as well.
>
> I ran my test as follows: http://practice:8080/p/test2/test2.jsp?f=page.html , and test2.jsp had <%@ 
include file="request.getParameter("f")" %> (which I believe won't work)
>
> Here's parts of the error, if it helps him:
>
> HTTP Status 500 -
> type Exception report
> message
> description The server encountered an internal error () that prevented it 
from fulfilling this request.
> exception
> org.apache.jasper.JasperException: Unable to load class for JSP
>  org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:598)
>  
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:137)
>  
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
>  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
>  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> root cause
> java.lang.ClassNotFoundException: org.apache.jsp.p.test2.test2_jsp
>  java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>  java.security.AccessController.doPrivileged(Native Method)
>  java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>  org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:133)
>  org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:65)
>  org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:596)
>  
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:137)
>  
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
>  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
>  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>
>
> Also, if he sets up JSTL1.1 correctly, the following will also work:
>
> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>
> <c:import url="${param.f}"/>
>
> Where param.f , is the equivalent of request.getParameter("f")
>
> -Rashmi
>
>
> Rashmi,
>
> I'm curious as to why his second approach causes the memory error that
> he gets, would you have any insight as to why it's happening?  I've
> checked out the docs and they don't indicate anything about the way the
> include directive uses memory.  I'm thinking we might actually have a
> bug to report.
>
> Zack
>
>
>
> 
____________________________________________________________________________________
> The fish are biting.
> Get more visitors on your site using Yahoo! Search Marketing.
> http://searchmarketing.yahoo.com/arp/sponsoredsearch_v2.php
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to