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

        

Reply via email to