2017-08-16 2 views
0

JSR223 Sampler eine Erklärung haben, dass Groovy Compilable interface anders als andere Skriptsprachen implementiert und deshalb wird empfohlenJMeter Script Engine, die Caching und Kompilierung erlauben

von Caching und Zusammenstellung zu profitieren, die Sprach-Engine für Scripting verwendet muss JSR223 kompilierbare Schnittstelle implementieren (Groovy ist eine von diese, Java, Javascript und Beanshell sind nicht)

ich habe versucht, es zu prüfen, mit similar code in JSR223 Sampler. Ich habe versucht, alle verfügbaren Sprachen mit kompilierbar zu überprüfen:

import javax.script.Compilable; 
import javax.script.ScriptEngineFactory; 
import javax.script.ScriptEngineManager; 
ScriptEngineManager mgr = new ScriptEngineManager(); 
    engineFactories = mgr.getEngineFactories(); 
    for (ScriptEngineFactory engineFactory : engineFactories) { 

     if (engineFactory instanceof Compilable) { 
       log.info(engineFactory.getEngineName() + " Script compilation is supported."); 
      } else { 
       log.info(engineFactory.getEngineName() + " Script compilation is not supported."); 
      } 
    } 

Mein Ergebnis ist:

Oracle Nashorn Script compilation is not supported. 
JEXL Engine Script compilation is not supported. 
Groovy Scripting Engine Script compilation is not supported. 
JEXL Engine Script compilation is not supported. 
Velocity Script compilation is not supported. 
BeanShell Engine Script compilation is not supported. 

Bedeutung keine Unterstützung Kompilation,

EDIT 1 I nach ändern @ aristotll der Scheck und jetzt gibt es alle Unterstützung Kompilierung

final ScriptEngine engine = engineFactory.getScriptEngine(); 
if (engine instanceof Compilable) { 

EDIT 2

I nach ändern, um @aristotll zweiten bearbeiten

try { 
      ((Compilable) engine).compile(""); 
         log.info(engineFactory.getEngineName() + " Script compilation is supported."); 
     } catch (Error e) { 
      log.info(engineFactory.getEngineName() + " Script compilation is not supported."); 

Ich bin immer interessantes Ergebnis: Nashorn und JEXL unterstützen es

Groovy Scripting Engine Script compilation is supported. 
Oracle Nashorn Script compilation is supported. 
JEXL Engine Script compilation is supported. 
BeanShell Engine Script compilation is not supported. 
JEXL Engine Script compilation is supported. 

Am Ich überprüfe etwas falsch? Muss ich mehr Gläser importieren, um es zu aktivieren? Wie kann ich wissen, ob die Scripting Engine Zwischenspeichern und Kompilieren verwendet? ist JMeters Aussage falsch/veraltet?

Antwort

1

Sie benötigen ScriptEngine Instanz statt ScriptEngineFactory

final ScriptEngine engine = engineFactory.getScriptEngine(); 
if (engine instanceof Compilable) { 
... 

Warum alle Compilable zu bekommen? Weil diese Script-Engines in Zukunft kompilierbar sein könnten. Aber derzeit nicht unterstützt, so implementieren sie alle diese Schnittstelle. Sie können versuchen, die leere Zeichenfolge zu kompilieren:

+0

Vielen Dank. Aber jetzt bekomme ich alle Skript-Engine-Unterstützung Compilation – user7294900

+0

@ user7294900 Ich aktualisiere meine Antwort. – aristotll

+0

Groovy Scripting Engine Skriptkompilierung wird unterstützt. Oracle Nashorn Script-Kompilierung wird unterstützt. JEXL Engine Skriptkompilierung wird unterstützt. BeanShell Engine Skriptkompilierung wird nicht unterstützt. JEXL Engine Skriptkompilierung wird unterstützt. – user7294900