На вашем месте у меня был бы совершенно отдельный процесс, который присуждает награды.Возможно, он запускается один раз в день в основной базе данных, которая содержит все данные вашего игрока / игры.
Ваше основное приложение, ориентированное на клиента, знает о наградах, но все, что оно знает о них, - это данные, загружаемые из БД -что-то вроде заголовка, изображения, описания, может быть, сколько людей получили награду и т. д. и (на основе таблиц БД), кто выиграл награду.
Ваш процесс сбора премий просто выполняется в пакетном режиме, один раз в день / час и т. д., и предоставляет новые награды подходящим игрокам.Тогда основное клиентское приложение уведомляет их, но на самом деле не должно знать, как их предоставлять.Это дает вам свободу перекомпилировать и повторно запускать средство награждения в любое время, когда это не требуется, без влияния на ядро приложения.
Другой подход, в зависимости от того, насколько ограничены ваши награды, состоит в написании простого интерфейса правил, которыйпозволяет определять правила в данных.Это было бы идеально для достижения того, что вы описываете, но, на мой взгляд, это довольно трудоемкая работа, не приносящая особого вознаграждения.
PS - при запуске чего-то вроде сервера онлайн-покера вы собираетесь запуститьв версии этой проблемы все время.Вам абсолютно необходимо разработать способ развертывания нового кода, не разрушая вашу службу и не имея окна простоя.Работа над Java-ориентированным программным решением для наград не решит эту проблему в долгосрочной перспективе.Вам следует изучить литературу по работе с настоящими 24/7 сервисами, есть немало способов решить эту проблему, и в наши дни это не так уж и сложно.