Hello all,
I found that the WAR file of the Shindig snapshot 1.1 doesn't include
the juel-2.1.0.jar. That prevented the shindig from working correctly in
the Tomcat.
It takes time for people to figure out the problem if they just
follow the instruction from the Shindig's download page.
Could this issue be fixed in the release package?
Thanks,
Wenjun
Removing the API will certainly fix the problem, but is juel playing
with classloaders ?
All of shindig is in the same classloader, so unless code starts
playing with a classloader, all classes will get he the same copies of
APIs etc.
The only time a problem hits in a single webapp environment is when
classes start using different techniques to change the load order
effectively generating more than one load path.
The problem hits all the time in multi webapp multi classloader
environments without special search policies. One of the projects I
have worked on had about 200 separate classloaders with 2 shared
loaders and no real search policy other than parent. Lots of fun (not!)
If juel is protecting its API binding, then removing the API might
help provided that protection is delegating to parent correctly.
Ian
On 30 Apr 2009, at 02:20, Paul Lindner wrote:
I hit the same problem, and ended up the authn/authz code on Tomcat
instead.
This might be resolved in the new juel release that splits out the
api and implementation, I'll try that later tonight and see if that
helps...
On Apr 29, 2009, at 5:17 PM, Brian Eaton wrote:
I think we've been bitten by java class loading fun. Has anyone tried
viewing http://localhost:8080/login.jsp lately? When I do, I get the
following error:
Problem accessing /login.jsp. Reason:
de.odysseus.el.ExpressionFactoryImpl cannot be cast to
javax.el.ExpressionFactory
After digging a bit, it looks like there are two different versions of
javax.el.ExpressionFactory being loaded into the JVM. The first is
one from JUEL, the second is from the jetty jsp api. Output from
-verbose:class
...
[Loaded javax.el.ExpressionFactory from
file:/home/beaton/sb/shindig/target/work/webapp/WEB-INF/lib/juel-2.1.0.jar]
...
[Loaded javax.el.ExpressionFactory from
file:/home/beaton/.m2/repository/org/mortbay/jetty/jsp-api-2.1-glassfish/9.1.1.B51.25.p1/jsp-api-2.1-glassfish-9.1.1.B51.25.p1.jar]
...
I suspect the cast fails because ExpressionFactoryImpl is inheriting
from one instance of the class, but being cast to the other.
Anybody seen this before?