tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dale Ogilvie" <Dale_Ogil...@trimble.com>
Subject RE: ClassCastException org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
Date Thu, 09 Aug 2012 02:26:50 GMT

-----Original Message-----
From: Mark Thomas [mailto:markt@apache.org] 
Sent: Wednesday, 8 August 2012 7:44 p.m.
To: Tomcat Users List
Subject: RE: ClassCastException org.apache.jasper.runtime.ELContextImpl cannot be cast to
org.apache.jasper.el.ELContextImpl

>>Dale Ogilvie <Dale_Ogilvie@trimble.com> wrote:
>>So you are saying that Tomcat should not be responsible for preventing
>>app1 from unintentionally loading a class from app2/WEB-INF/lib/[jetty-jsp-el].jar?

>No I am not saying that. The reason you see the exception is because Tomcat (well, with
the help of the JVM) prevents a class loaded from one application being visible to another
application.

Thanks for your help Mark. I think your understanding doesn't match what is being reported.
I'll lay it out as I see it, for your consideration:

App1 *does not have* the jetty EL implementation class org.apache.jasper.runtime.ELContextImpl
anywhere in its classloader tree
App2 *has* the jetty EL implementation EL class org.apache.jasper.runtime.ELContextImpl in
WEB-INF/lib

When app1 is accessed and an EL expression is encountered in a jsp this error results:

ClassCastException org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl

That says to me that app1 already has an instance of org.apache.jasper.runtime.ELContextImpl
which it is trying to cast to the tomcat version.  So your statement that "Tomcat prevents
a class loaded in app2 from being visible in app1" seems to be false. App1 according to the
error message has an instance of org.apache.jasper.runtime.ELContextImpl from app2, and it
can't be cast to the expected class.

Or am I reading this error message incorrectly?

1. org.apache.jasper.runtime.ELContextImpl is from app2
2. org.apache.jasper.el.ELContextImpl is the normal tomcat class expected in app1
3. The error message from app1 is ClassCastException org.apache.jasper.runtime.ELContextImpl
cannot be cast to org.apache.jasper.el.ELContextImpl

Dale

Mime
View raw message