OgnlRuntime.getCompiler and thread-safety.
------------------------------------------
Key: OGNL-34
URL: https://issues.apache.org/jira/browse/OGNL-34
Project: OGNL
Issue Type: Bug
Reporter: Maurizio Cucchiara
Priority: Minor
As you can see, {{getCompiler}} is not thread safe.
I recently added a new performance benchmark to test its 3d-safety and
performance: during my tests I have experienced a fast execution on unsafe
version vs the safe one (though every concurrent test instantiated a new
compiler).
I have not yet investigated and I still don't know what can cause running more
than one instance of the compiler in the same jvm. If necessary we can consider
to make compiler a singleton in order to enforce this concept.
What do you think guys?
{code}
public static OgnlExpressionCompiler getCompiler( OgnlContext ognlContext )
{
if ( _compiler == null )
{
try
{
OgnlRuntime.classForName( ognlContext, "javassist.ClassPool" );
_compiler = new ExpressionCompiler();
}
catch ( ClassNotFoundException e )
{
throw new IllegalArgumentException(
"Javassist library is missing in classpath! Please add missed
dependency!", e );
}
}
return _compiler;
}
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira