Прежде всего, вы используете последнюю интеграцию Spring / BlazeDS? Если нет, я настоятельно рекомендую проверить это здесь . Это может значительно упростить настройку адресатов сообщений для push-сообщений. Это также позволит вам использовать места назначения сообщений JMS и Spring Integration, а также интегрировать Spring Security, если вы того пожелаете.
Теперь, чтобы ответить на ваш вопрос. Каковы требования к жизненному циклу для вашей службы передачи данных? Хотите ли вы иметь возможность управлять параметрами этой передачи данных (т. Е. Запускать и останавливать ее, частотой и т. Д.) Из других классов? Создание этого сервиса с использованием Spring позволит вам внедрять его в другие bean-компоненты для управления по вашему желанию.
В настоящее время у меня есть похожий вариант использования, в котором я использую адресат сообщения BlazeDS для «передачи» данных телеметрии в клиентский браузер. Я установил «сервисный» класс, который создается в Spring как единичный экземпляр.
Если вам не требуется внешнее управление этим синглтоном, я предлагаю вам использовать аннотированный метод @PostConstruct или "init" для создания потока и его запуска с анонимным Runnable, представляющим ваш основной цикл. Если вашей службе необходимо передавать данные с заранее определенной частотой, вы можете рассмотреть java.util.concurrent.ScheduledExecutorService.
В любом случае вам также потребуется настроить аннотированный метод @PreDestory или «destroy», который будет выполняться непосредственно перед уничтожением экземпляра синглтона. Это позволит вам вставить код для безопасной остановки цикла Thread или ScheduledFuture и очистить все необходимые ресурсы до закрытия контейнера Spring.
Если вы хотите дальнейшего взаимодействия со своим сервисом, вы можете манипулировать им из других классов (таких как веб-контроллеры и т. Д.), Используя интерфейс сервиса. Пусть ваш класс реализует этот интерфейс и внедрит ваш класс в другие классы, используя этот интерфейс. Для более смелого решения вы можете использовать dm Server или другой контейнер OSGi и создать службу OSGi.
Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь в отношении этого процесса или есть конкретные детали, которые я могу осветить дальше.