commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maurizio Cucchiara (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OGNL-34) OgnlRuntime.getCompiler and thread-safety.
Date Sat, 29 Oct 2011 06:19:32 GMT
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

        

Mime
View raw message