Мой сценарий groovy предварительно запустился при запуске сервера (я сохранил сценарии groovy как varchar в БД), как показано ниже в Map,
final Binding sharedData = new Binding();
final GroovyShell shell = new GroovyShell(sharedData);
script= shell.parse(rs.getString("VALIDATION_SCRIPT"));
Теперь при проверке проверки входных записей на основе указанной проверкиЯ пытаюсь выполнить предварительно скомпилированный скрипт, как показано ниже.
Script scrpt = Validation.getScript(); //getting from cache
scrpt.getBinding().setVariable("attributes", objects);
scrpt.getBinding().setVariable("tools", scrpt);
GroovyResponse gr = scrpt.evaluate("tools.valid(attributes)");
но здесь мое приложение требует много времени для оценки .. я думаю, размер кучи также увеличивается и происходит сборщик мусора.Может ли кто-нибудь помочь мне, если есть лучший способ сделать это.без влияния на производительность.
один из моих отличных сценариев:
import com.fis.derivatives.utility.generic.model.GroovyResponse;
def valid(Map mapInput){
GroovyResponse obj = new GroovyResponse()
if(mapInput.inputVal.equals("1")){
obj.setStatus(true) ;
obj.setResultValue("B") ;
} else if(mapInput.inputVal.equals("2")){
obj.setStatus(true) ;
obj.setResultValue("S") ;
}else{
obj.setStatus(false);
obj.setComment("Error : Unable to extract BUY_SELL. Please check BS value "+mapInput.inputVal+".")
}
return obj;
}