Я использую Apache Commons Pool для создания пула движков Nashorn. При запуске приложения я вызываю preparePool()
для подготовки minIdle
числа экземпляров к eval()
всем сценариям в движке, чтобы он был готов немедленно отвечать на вызовы invokeFunction()
.
Разминка
@Override
public NashornScriptEngine create() {
// ...
try {
engine.eval(asset1);
engine.eval(asset2);
engine.eval(asset3);
} // ...
return engine;
}
В зависимости от размера пула и сложности предварительно загруженных скриптов это занимает значительное время.
Вопросы
Могу ли я разогреть только один экземпляр и безопасно клонировать его до числа
minIdle
экземпляров?Можно ли безопасно сериализовать и сохранить клон созданного экземпляра? (что позволило бы поддерживать кеш движка, который нужно было аннулировать только в случае изменения одного из активов)
Связанные ресурсы (этот раздел будет обновляться по мере необходимости)