What's new in EzyPlatform 1.2.9?

This release introduces a more controlled Scheduler lifecycle, updates the default schedulers across Admin, Web, and Socket runtimes, upgrades core platform dependencies, and standardizes the Maven Checkstyle configuration.
  1. Improved Scheduler lifecycle management
    Introduced Scheduler.start() to explicitly start the task-scanning loop. A Scheduler instance no longer begins running immediately after construction, giving applications better control over when scheduled tasks start. The start() method is protected by AtomicBoolean, ensuring the scheduler can only be started once even if the method is invoked multiple times.
  2. Improved task submission reliability
    Enhanced error handling when submitting tasks to the ExecutorService. If task submission fails, the scheduler automatically removes the task from the running-task list, preventing stale task states and improving scheduler stability.
  3. Updated default schedulers for Admin, Web, and Socket
    The platform's built-in schedulers have been updated to align with the new lifecycle model. AdminScheduleRunner now calls scheduler.start() before registering scheduled jobs. A new WebSchedulerConfig automatically starts the WebScheduler after bean initialization. Socket scheduling has been split into SocketSchedulerConfigBefore for singleton registration and SocketSchedulerConfigAfter for starting the scheduler with the highest configuration priority.
  4. Upgraded platform dependencies
    Updated several core dependencies, including ezyfox to 1.0.8, ezy to 1.3.1, ezy-http to 1.5.6, ezy-server to 1.3.1.3, game-box to 1.2.9, thymeleaf to 3.1.5.RELEASE, thymeleaf-layout-dialect to 3.4.0, and rhino to 1.7.15.1.
  5. Standardized Maven Checkstyle configuration
    The maven-checkstyle-plugin configuration has been standardized by replacing the hard-coded version 3.1.2 with the shared property across project pom.xml files and project templates, making dependency management more consistent.
  6. Compatibility notes
    Applications that create new Scheduler(...) instances directly must now explicitly call scheduler.start() before scheduled tasks can execute. The built-in Admin, Web, and Socket schedulers have already been updated to use the new lifecycle automatically.