The <@include ...> directive should statically include the text from the specified file into the page at translation time (see specs at link). What is actually happening is that the specified file is parsed as a JSP file, then added. For instance it's not possible to have a "header.inc" and "footer.inc" where taglib tags opened in the header are closed in the footer file - Jasper gives an "Unterminated xxx tag" exception. That error should only occur if the opened tag is not closed by the end of the "main" file. The version of Tomcat is that included in JBoss 4.0.3 SP1 (version 5.5.x).
The JSP spec specifically forbids having an opening tag in one translation unit, and the closing tag in another.
The JSP file and its static include files *together* are a translation unit. See link below. So, a tag which is opened in one @include'd file and closed in another is in the same translation unit. http://java.sun.com/products/jsp/syntax/1.2/syntaxref1210.html http://java.sun.com/products/jsp/tags/syntaxref.fm3.html: "A translation unit is the JSP source file plus all of its static include files, but without any dynamic include files."
And from your link, there is a link to http://java.sun.com/products/jsp/tags/syntaxref.fm6.html#8772 which states: "This means that the parsed result of the included file is added to the JSP file where the include directive is placed. Once the included file is parsed and included, processing resumes with the next line of the calling JSP file."