BlazeDS и класс Java в файле WAR - PullRequest
       22

BlazeDS и класс Java в файле WAR

0 голосов
/ 26 октября 2009

Привет, у меня есть класс Java, который был развернут как веб-приложение WAR на сервере BlazeDS / Spring, работающем на JBOSS.

Помимо приложения Flex, которое будет обращаться к файлу WAR, мне также необходимо запустить некоторые процессы на стороне сервера, которые будут инициировать BlazeDS для «передачи» клиенту Flex через обмен сообщениями AMF.

Каков наилучший способ реализации этого процесса на стороне сервера? Должен быть просто класс с методом main () в файле WAR, который вызывается из командной строки? Можно ли это сделать - не уверен, что вы можете запустить класс в файле WAR из командной строки? - Это должен быть просто класс с методом main () в файле JAR, который вызывается из командной строки?

Не уверен, что стандартная практика здесь. Ключевым моментом является то, что процесс должен быть запущен на сервере BlazeDS для выталкивания данных (не на клиенте Flex).

Любую помощь он бы оценил Mike

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Маршалл, ваша звезда - спасибо за это!

Я использую Spring @PostConstruct, и это работает лакомство. Кажется, что класс Monitoring автоматически создается экземпляром класса Monitoring, а затем вызывается метод @PostConstruct.

Мне также пришлось включить в конфигурационный файл Spring следующее, чтобы это работало:

XMLNS: контекст = springframework.org / схема / контекст springframework.org/schema/context springframework.org/schema/context/spring-context-2.5.xsd

В методе @PostConstruct я реализовал простой java.util.Timer, который отправляет данные в клиент Flex через регулярные интервалы. (Мне все еще нужно настроить его как синглтон через Spring - я новичок в Spring!)

Предоставляет ли ScheduledExecutorService какие-либо преимущества по сравнению с классом Timer для моих целей?

Еще раз спасибо С уважением Michael

0 голосов
/ 27 октября 2009

Прежде всего, вы используете последнюю интеграцию 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.

Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь в отношении этого процесса или есть конкретные детали, которые я могу осветить дальше.

...