У меня есть приложение поверх платформы Quarkus. Основная функциональность приложения - простой REST API для планирования некоторых задач (теперь он просто публикует некоторые сообщения в журнале).
Функциональность планирования, которую я реализовал с помощью Quartz Framework, и в общих чертах это выглядит, когда приложение получает POST запрос на планирование нового события выполняет две вещи:
- сохранение объекта из запроса к базе данных;
- расписание кварцевых заданий на указанные в JSON дату и время.
Также для случая, когда приложение только запускается, я создал метод, который берет все сущности из базы данных и планирует для них задания Quartz.
Но когда я пытался создать собственный образ для этого приложения, используя GraalVM Я столкнулся с таким исключением:
com. oracle .graal.pointsto.constraints.UnsupportedFeatureException: в кучи изображений не допускаются экземпляры sun.security.provider.NativePRNG, так как этот класс должен быть инициализируется во время выполнения изображения.
Быстрый поиск в Google дал мне закрытую проблему в Gra alVM Github repo , в котором говорится, что Quartz использует ObjID RMI с инициализацией во время выполнения. Из-за этого Quartz нельзя использовать в приложениях, где требуется компиляция собственных изображений GraalVM.
Так же и планировщик Quarkus позволяет планировать задания прямо в коде Java (что-то вроде моей реализации с Quartz) ? Во всех примерах и фрагментах кода, которые я нашел, я видел только довольно простое использование аннотации @Scheduled для методов (как в официальном руководстве). Или, может быть, есть другие альтернативные инструменты для планирования задач в Java, которые работают с собственной компиляцией изображений?