We ran across this exact same problem recently, and it has to do with the way 
that the servlet container does the JSP --> Java translation. You are likely to
encounter this problem if the container puts everything  -- scriptlets, custom 
tags, etc. -- into a single monolithic _jspService method, which is what most 
containers do. I asked the Jikes-dev list about this, and this was the response:

"It is a fundamental flaw in the .class file format.  You currently can't 
have a method with more than 64K bytecodes.  (Well, technically you can, 
but it cannot have any exception handlers after the 64K limit, and it 
relies on the mercy of the VM to not crash).  See JVMS 4.10.  Sun is 
considering extending the .class file format in JDK 1.5, to allow up to 
4GB bytecodes in a method, at the expense of requiring such .class files 
to be run on a 1.5 compatible VM, but that doesn't help you now."

We saw this problem when we started using 400+ custom tags in a single page. The 
newer versions of Tomcat do not suffer from this problem because they are smart 
enough to put the custom tag logic into separate private methods within the 
generated .java file. (At least when I tested it on Tomcat 4.1.12 the problem
disappeared for me. YMMV.)

-= James

> Some double talk,
> so I ran into this JVM exeption after switching from the "oh 
> you're too expensive for me" Weblogic to "you're great for a 
> free software" JBoss.
> Turns out that Tomcat (used in conjunction w/JBoss) has a 
> 64kb limitation whilst generating the servlet code from a JSP.
> I intend to follow some suggestion I read and reduce the size 
> of the .class files by:
>  - reducing the number of tags used by merging some 
> functionalities at the expense of a clean code
>  - putting some code outside of the jsp and including these 
> snippets at run time
> 
> It's a rather nasty and long undertaking.
> If anyone has encountered this type of exeption can you 
> confirm this assumption and what were the steps you took to 
> overcome this limitation?
> Heard of a future Tomcat release that'll increase the 64kb limit?
> Thanks
> 
> Configuration details:
> JBoss 2.4.4 bundle w/Tomcat 4.0.1
> Struts 1.0.2

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to