Я работаю над серверным приложением, которое может быть расширено пользовательскими скриптами Groovy.Очевидно, что я хочу убедиться, что эти скрипты работают в очень жесткой песочнице, где они не могут нарушить работу основного кода приложения или потреблять слишком много ресурсов для перегрузки сервера.
Я изучил различные возможности, и окончательное решение может быть их комбинацией:
Запустите сценарий в очень ограниченном диспетчере безопасности .Сценарий запускается в пределах без разрешения SecurityManager.Дополнительные разрешения должны быть объявлены (например, Android).
Запустить новую JVM .Создать оболочку ScriptProcess для Runtime.exec и создать новую JVM с менеджером безопасности, ограниченной кучей и т. Д. Поскольку мы запускаем полноценный процесс, мы можем получить больше контроля над мониторами с плохим поведением?Затраты на ресурсы были бы ужасными, хотя ... Альтернативой было бы использовать здесь Ant, но будет ли он масштабируемым?
Java Monitor API В Java 6есть пакет с возможностью мониторинга.Мы можем отслеживать потоки и, возможно, обнаруживать бесконечные циклы и потребление памяти.Кто-нибудь использовал это?
Это то, что я имею в виду сегодня.Каков наилучший способ убедиться, что эти сценарии работают правильно и при этом сохраняют определенную масштабируемость и производительность?