https://issues.apache.org/bugzilla/show_bug.cgi?id=37084


Konstantin Kolinko <knst.koli...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|regression                  |normal
             Status|RESOLVED                    |REOPENED
         Resolution|WORKSFORME                  |




--- Comment #10 from Konstantin Kolinko <knst.koli...@gmail.com>  2009-01-03 
08:31:39 PST ---
Though I am yet failing to reproduce the issue in current tc6.0.x, I have
elaborated a theory why it occurs.

1. The exception is caused by creating JasperLoader instance with
a null baseUrl and trying to use it to load a class, in
JspCompilationContext#getJspLoader().

Usually that does not occur, because JspCompilationContext#createOutputDir() is
called first.

2. During compilation the #createOutputDir() call does occur: a) in
Compiler#isOutDated() when it checks for the full name of the java source /
class file, b) later, when Compiler#generateJava() explicitly calls
JspCompilationContext#checkOutputDir().

Thus, the compilation is not the route that leads to the preliminary creation
of JasperLoader instance.

3. I think that the issue is caused when JspServletWrapper#getDependants() gets
called earlier than the compilation of the class occurs.

The events will occur as following:
1) JspServletWrapper#getDependants() calls JspCompilationContext#load() that
results in #getJspLoader() call and creation of JasperLoader instance. 
2) The JasperLoader instance is unusable and this call results in an exception.
Nevertheless the created JasperLoader instance is remembered.
3) JspServletWrapper#getDependants() catches the exception, but silently
swallows it.
4) The program continues running but breaks later.

Thus, the question is what can cause the early #getDependants() call on a fresh
compilation context. I am not able to reproduce it. Maybe there should be some
interrelated tag/jsp files (OP mentioned: "Seems to be related to the use of a
custom taglib in a JSP that is included by another JSP", but that is not
sufficient). Also, the known workaround for the issue (disabling caching in
JspC) should somehow fit into the picture.

Nevertheless, I am proposing a patch to TC 6.0, that I attached above. A side
effect is that it mkdirs the output directory, but I think that must be OK.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to