Я все еще изучаю соответствующие шаблоны Java EE и буду благодарен за советы по лучшим инструментам для использования в этой проблеме.Является ли @Singleton Session bean правильным местом для управления объектами в разных сеансах?
У меня есть система, которая должна управлять несколькими экземплярами интеллектуальных агентов. Клиенты могут создать новый экземпляр или получить доступ к желаемому экземпляру по имени. Несколько клиентов могут получить доступ к одному и тому же агенту одновременно.
Наш план подвергать операции на агентов через интерфейс REST, поэтому вызов может быть что-то вроде:
GET /sessions/
POST /sessions/{name}
PUT /sessions/{name}/doanaction
Эти сеансы не будут сохраняться в прошлом перезагрузки, так что я не ищу Ресурса управление.
Моя мысль заключалась в том, что мы могли бы использовать сеансовый компонент @Singleton
для управления отображением имен агентам, а затем вставлять его в сеансовые компоненты @Stateless
, которые предоставили бы утилиты методам веб-службам REST.
Я хочу убедиться, что я не злоупотребляю @Singleton здесь. Поскольку несколько клиентов могут обращаться к одному и тому же агенту, похоже, нет никакого способа использовать управление сеансами Java EE для облегчения управления объектами на всех сеансах. Существуют ли другие инъекционные объекты, которые я должен использовать, помимо бина сеанса @Singleton? Как правило, это правильный подход к использованию этой проблемы? Советы оценены!
Спасибо, это был вид подхода, который я предполагал. Есть ли способ включить ejb для распространения экземпляров агента на нескольких машинах, как это возможно с сессионными компонентами @Remote? –
Я также ценю осторожность в отношении синхронизированного доступа. Очень полезная информация! –
Я рад, что смогу помочь. для кластеризации, возможно, лучше хранить состояние агента в базе данных, если каждый раз возникает проблема с запросом, тогда можно настроить кластерный кэш транзакций второго уровня https://docs.jboss.org/jbossclustering/cluster_guide/ 5.1/html/clustering-entity.html, хотя этот тип кеша обычно является платежным продуктом –