Сохранение ссылки на актерскую систему

1

У меня есть настольное приложение со встроенным приложением и некоторый SWING-интерфейс на Java. Я хочу использовать akka для отправки сообщений из встроенных сервлетов приставок в мои классы приложений (с возможностью для актера обновлять интерфейс swing для входящего сообщения). Поскольку я понимаю, что мне нужна единая актерская система для всего приложения. Вопрос в том, как лучше всего обращаться с ним? Должен ли я сделать какой-то синглтон, который обертывает ссылку на актерскую систему? Может ли быть проблема с загрузчиками классов, поскольку причал может использовать его собственный загрузчик классов?

  • 0
    Я не понимаю из вашего описания, что делает контейнер сервлетов; кто или что соединяет и отправляет что-либо в этот контейнер сервлетов и как это связано с Swing-приложением?
Теги:
akka
embedded-jetty

1 ответ

0

В общем, с сервлетами вы решаете, хотите ли вы систему актера на jvm или на экземпляр встроенного сервера или на каждое веб-приложение. Большинство людей в обычном случае использования хотели бы использовать систему актеров для каждого веб-приложения. В этом случае они будут подклассифицировать ServletContextListener, создать систему ServletContext, затем получить ServletContext из ServletContextEvent и добавить систему ServletContextEvent в качестве атрибута. Затем в сервлетах и сервлет-фильтрах вы можете искать систему актеров из контекста сервлета. В целом, хотя люди, начинающие с нового проекта, должны смотреть на веб-фреймворки Play else the Socko, которые созданы для того, чтобы хорошо работать с Akka из коробки.

В вашем случае вы говорите о встраивании контейнера сервлета и спрашиваете о загрузке классов. В контейнерах сервлетов используется семантика загрузчика классов "родительская последняя". Если классы akka не находятся в банке на войне, мы ожидаем, что они будут загружены из основного пути класса приложения. Если ваше здание с чем-то вроде maven, вы можете пометить разделяемые библиотеки зависимостей веб-проектов как "предоставленные", чтобы ваши военные классы скомпилировались против них, но они все-таки попали в файл войны. Затем, если ваши классы в webapp используют эти классы библиотек, они могут поступать из основного пути к классам, который может использоваться совместно с любым кодом, который не запущен в webapp.

Если вы фактически используете веб-контейнер просто для динамического повторного развертывания кода, то это, вероятно, неправильный инструмент работы. Вместо этого используйте контейнер osgi. Вот ссылка на какой-то код, где он динамически передислоцирует бизнес-логику с помощью osgi https://github.com/simbo1905/osgi-extensible. Есть несколько хороших контейнеров спецификации osgi enterprise, в которых пример кода использует felix, но есть и другие. Единственная причина, по которой сегодня использовать контейнер сервлета, - это обслуживать веб-страницы с использованием технологии jsp. Акка имеет удаленный обмен сообщениями и тому подобное и отлично работает с веб-камерами HTML5, не требуя контейнера сервлетов. Вы можете использовать веб-сервер Socko, который написан в Akka, чтобы разместить вашу бизнес-логику akka и использовать json для сообщения для него без раздувания полного контейнера сервлетов. Вот ссылка на некоторый код, который делает это https://github.com/simbo1905/sprint-planning

Ещё вопросы

Сообщество Overcoder
Наверх
Меню