graaljs 적용

This commit is contained in:
Sungpil Hyun
2024-09-24 16:17:07 +09:00
parent 1610132270
commit a5845ccba3
2 changed files with 41 additions and 31 deletions
@@ -17,10 +17,10 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.regex.Pattern;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.apache.commons.lang3.SerializationUtils;
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.HostAccess;
import org.graalvm.polyglot.Value;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -193,35 +193,44 @@ public class VirtualUser implements Runnable {
}
}
private void executePreRequestScript(ApiRequestDTO apiRequest) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.put("console", new Console());
engine.put("globals", globals);
engine.put("variables", variables);
engine.put("request", apiRequest);
try {
if(apiRequest.getPreRequestScript() != null)
engine.eval(apiRequest.getPreRequestScript());
} catch (ScriptException e) {
logger.error("Error executing pre-request script", e);
public void executePreRequestScript(ApiRequestDTO apiRequest) {
try (Context context = Context.newBuilder("js")
.allowHostAccess(HostAccess.ALL)
.allowHostClassLookup(className -> true)
.build()) {
Value bindings = context.getBindings("js");
bindings.putMember("console", new Console());
bindings.putMember("globals", globals);
bindings.putMember("variables", variables);
bindings.putMember("request", apiRequest);
if(apiRequest.getPreRequestScript() != null) {
context.eval("js", apiRequest.getPreRequestScript());
}
} catch (Exception e) {
logger.error("Error executing post-request script", e);
e.printStackTrace();
}
}
private void executePostRequestScript(ApiRequestDTO apiRequest, ApiResponse response) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.put("console", new Console());
engine.put("globals", globals);
engine.put("variables", variables);
engine.put("request", apiRequest);
engine.put("response", response);
try {
if (apiRequest.getPostRequestScript() != null){
engine.eval(apiRequest.getPostRequestScript());
public void executePostRequestScript(ApiRequestDTO apiRequest, ApiResponse response) {
try (Context context = Context.newBuilder("js")
.allowHostAccess(HostAccess.ALL)
.allowHostClassLookup(className -> true)
.build()) {
Value bindings = context.getBindings("js");
bindings.putMember("console", new Console());
bindings.putMember("globals", globals);
bindings.putMember("variables", variables);
bindings.putMember("request", apiRequest);
bindings.putMember("response", response);
if (apiRequest.getPostRequestScript() != null) {
context.eval("js", apiRequest.getPostRequestScript());
}
} catch (ScriptException e) {
} catch (Exception e) {
logger.error("Error executing post-request script", e);
e.printStackTrace();
}