I am running a system that uses a .jsp page to explicitly invoke the JspRuntimeLibrary.include <http://tomcat.apache.org/tomcat-4.1-doc/jasper/docs/api/org/apache/jasper/runtime/JspRuntimeLibrary.html#include%28javax.servlet.http.HttpServletRequest,%20javax.servlet.http.HttpServletResponse,%20java.lang.String,%20javax.servlet.jsp.JspWriter,%20boolean%29> function to build another web page.

In the following, the full resulting page is stored as a string in HTMLString

try {
    myout = new StringWriter();
    pageContext.pushBody(myout);
    out = pageContext.getOut();
org.apache.jasper.runtime.JspRuntimeLibrary.include(request,response, compileFileName, out, true);
    pageContext.popBody();
    out = pageContext.getOut();
    HTMLString = myout.toString();
}
catch (Throwable t) {
    // == error processing
    HTMLString = "";
}
finally {
}

After the processing, I have no need of the original source file or the work files (the xxx_jsp.java and the xxx_jsp.class files) so I want to delete them. I use the following to delete the work files:

//  the "source" jsp uses the sessionId to guarantee a unique name
//  insert the lead underscore if sessionId starts with a digit
String workFileName = compileWorkPath +
     (("0123456789".indexOf(sessionId.charAt(0))>-1)?"_":"")+
     sessionId+"_jsp";
if (!(new File(workFileName+".class").delete()) ||
    !(new File(workFileName+".java").delete()) )
{
   //  do appropriate error processing...
}

For both Tomcat5.5 and Tomcat6, the above successfully deletes the .class files, but not the .java files - with a file sharing exception.

It appears as if the .java files are still "open" somewhere in the Tomcat processing. If I try to manually delete the .java file it also fails until I do another compile. Once there is a new .java class in the work directory, then I can delete the prior one.

Any suggestions??  Is this a bug?

Thank you,

David Poor

PS: If I have sent this to the wrong mailing list, please excuse the newbie error - and I would appreciate knowing which mailing list I should use.

Reply via email to