geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevan Miller (JIRA)" <>
Subject [jira] Created: (GERONIMO-4957) javax.el.CompositeELResolver is not thread-safe
Date Wed, 18 Nov 2009 16:38:39 GMT
javax.el.CompositeELResolver is not thread-safe

                 Key: GERONIMO-4957
             Project: Geronimo
          Issue Type: Bug
      Security Level: public (Regular issues)
          Components: specs
    Affects Versions: 2.1.4, 2.1.5, 2.2, 2.2.1, 3.0
            Reporter: Kevan Miller

A user reported that they get an intermittent NullPointerException:

17:08:45,133 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
at javax.el.CompositeELResolver.getValue(
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$301(
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$4.invoke(
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(
at javax.el.CompositeELResolver.getValue(
at org.apache.el.parser.AstIdentifier.getValue(
at org.apache.el.ValueExpressionImpl.getValue(
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(

The only way I can explain this exception is that multiple threads are simultaneously invoking
add() (and the resolvers[] array is becoming corrupted). Or multiple threads are simultaneously
accessing add() and getValue() (and getValue() is accessing an uninitialized array element).

The EL spec is silent on thread-safety issues for CompositeELResolver (though it does identify
thread safety issues for some other classes). I don't see anything spec-wise that prevents
multi-threaded access to CompositeELResolver. If anyone has other opinions, let me know. Otherwise,
looks like we need to close some timing windows in CompositeELResolver.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message