https://bz.apache.org/bugzilla/show_bug.cgi?id=62453

            Bug ID: 62453
           Summary: Tomcat tries to resolve uninitialized tag attributes
                    in EL as java class names and this behavior causes
                    performance problems.
           Product: Tomcat 9
           Version: 9.0.8
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: EL
          Assignee: dev@tomcat.apache.org
          Reporter: katsut...@worksap.co.jp
  Target Milestone: -----

an example of tag file

/WEB-INF/tags/sample.tag
{{{
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>
<%@ attribute name="foo" required="true" %>
<%@ attribute name="bar" %>
<%@ attribute name="baz" %>

<div>
  <div>foo:  ${foo.toString()}</div>
  <div>bar:  ${bar.toString()}</div>
  <div>baz:  ${baz.toString()}</div>
</div>
}}}

an example of jsp file calling tag without "bar" and "baz" attributes 
{{{
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

<html>
  <body>
    <h2>Example of Uninitialized Tag Attributes</h2>
    <tags:sample foo="FOO"/>
  </body>
</html>
}}}

I found that the uninitialized attributes were NOT set into context in Java
files generated from tag file.
Besides, when the uninitialized attributes were called in EL,
ScopedAttributeELResolver tries to resolve attributes name as java class names.

ref. getValue method in
http://svn.apache.org/repos/asf/tomcat/tags/TOMCAT_9_0_8/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
 



I have already confirmed that the uninitialized attributes actually affect
performance.
I got jfr to compare between there are uninitialized attributes or not.
It was confirmed that lock wait occurs in java.util.jar.JarFile class and
sun.misc.URLClassPath class only when there are uninitialized attributes in
tag.


the related bug

Performance issue evaluating EL in custom tags (tagx) due to inefficient calls
to java.lang.Class.forName()
https://bz.apache.org/bugzilla/show_bug.cgi?id=57583

-- 
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