jforum2 — это форк jforum, разработанный с использованием JDK 11+. Основные сущности и бизнес-интерфейсы jforum будут сохранены в неизменном виде, а реализация кода будет полностью переписана. Разработка и сборка выполняются с использованием OpenJDK 11+.
Основной веткой master
используется RedisQ для замены встроенной системы Spring ApplicationEvent. RedisQ — это открытый проект на GitHub, который использует Redis для реализации модели публикации/подписки. Однако он не использует встроенную функцию Pub/Sub Redis. В проекте сделано следующее объяснение:
То, что предлагает Redis с помощью Pub/Sub, — это модель слушателя, где каждый подписчик получает каждое сообщение при активном соединении, но не получает его при отключении. Мы хотим, чтобы все потребители в конечном итоге получали все сообщения независимо от того, находятся они онлайн или офлайн.
В распределённой среде, где вы имеете несколько экземпляров вашего компонента потребителя (приложений), работающих одновременно, каждый экземпляр получает каждое сообщение, отправленное на канал. Эта библиотека гарантирует, что любое сообщение будет принято один раз для каждого логического потребителя, даже если работают несколько экземпляров этого компонента.Ветвь
integration
использует ActiveMQ для замены распределения событий основной ветвиmaster
. Это позволяет управляющему триггерировать события, которые могут быть подписываться и реагировать на них передними и задними конечностями. Для этого требуется, чтобы передний и задний конец были подключены к одному адресу сообщений. Версия ActiveMQ, используемая в среде разработки: 5.16.0.
JForum2 отличается от JForum тем, что является многопроцессным проектом. JForum может безопасно работать с использованием EhCache, но поскольку JForum2 использует разделённый дизайн проекта, ему требуется централизованное общедоступное кэширование. Преимущества очевидны: например, назначение модератора в административной части сразу видно на переднем конце! Для этого требуется, чтобы передний и задний конец были подключены к одному адресу Redis. Версия Redis, используемая в среде разработки: 3.0.504 (Примечание: Redis для Windows).
x.api
в основной (x
) модуль; бизнес-логика и методы persistence полностью основаны на сущностях исходного основного модуля. Внутри основного модуля постоянные сущности больше не содержат других объектов, за исключением Album
. В шаблонах вместо связанных объектов используются копии этих объектов, например, связанный Album
в Topic
теперь хранится в виде TopicReplica
, который наследуется от Topic
.core.tag и core.tag.nlp модули объединены в core.nlp.
Внутренний пакет com.apobates.forum.utils.ip из utils модуля был перемещён в event.utils модуль.
Оригинальный Web модуль (trident) разделён на thrones и thrones.admin. Самописные JSP-теги были выделены в отдельный модуль thrones.tag, что позволяет использовать его как для фронта, так и для административной части.
Модуль thumbnail переименован в bucket.thumbnail.
В объекте ActionEventDescriptor добавлен новый атрибут rodeMember, используемый для основного расчёта баллов участников. Например, если администратор "Пётр" присваивает теме отметку "+", то ActionEventDescriptor.rodeMember будет равен ID участника "Пётр" (Member.id), а ActionEventDescriptor.memberId — ID администратора (Member.id). Атрибуты processed и victim больше не используются.
В объекте MemberOnline добавлены новые атрибуты: id(session_id) и memberNames(логины участников). Использование session_id в качестве первичного ключа позволяет отслеживать гостей. Логин гостя — это guest, а псевдоним — Guest#hash(ip). Запись состояния онлайн происходит через каждые три минуты, вместо того чтобы записывать каждый шаг пользователя.
Больше не требуются объекты MemberContact и MemberRealAuthentication.4. В объекте Topic добавлена новая характеристика anony, которая указывает, является ли тема анонимной. Значение true
указывает на анонимность, значение false
— на открытость.
Кодировка и декодировка изображений теперь выполняются для каждого отдельного соединения, а не для всего файла целиком.
Вместо использования объекта Result из utils модуля используется стандартный объект Optional из JDK.
При создании плагина-темы теперь выпускается событие PlugTopicPublishEvent, которое помогает различать темы, созданные через различные каналы.
Добавлено использование Hibernate Validator для валидации данных. Это особенно полезно для административной части проекта thrones.admin.
Добавлена зависимость Spring-Session. Проект не создаёт автоматически таблицы, связанные с Spring Session. Нужно самостоятельно создать эти таблицы, используя шаблон thrones/src/main/resources/META-INF/spring_session.sql.
Для выполнения расписанных задач используется Quartz. Это позволяет выполнять задачи одновременно для фронтенда и административной части, не вызывая конфликта между ними. Также потребуется создать таблицы, используя шаблон member.impl/src/main/resources/META-INF/quartz_mysql_innodb.sql.
Обновлён драйвер MySQL до версии com.mysql.cj.jdbc.Driver.8. Добавлена возможность анонимного создания тем участниками. Тем не менее, данные участника остаются в базе данных, но при этом они отображаются как анонимные.
Рефакторинг стратегий реализации и выделение вызова API из контроллера в StrategyInterceptorAdapter
, где контроллер использует аннотацию @Strategy
.10. В ForumActionEnum
добавлены новые действия: POSTS_QUOTE
(цитата ответа), POSTS_REPLY_FORM
(форма быстрого ответа).
Добавлен временной буфер для времени вставки онлайн-записей, чтобы не было необходимости каждый раз при выполнении операции пользователя обновлять онлайн-статус.
Реализация кэширования операционных записей с использованием массового сохранения CoreModuleActionEventAspect.AbstractCubbyHole
.
ETС
Из-за модификаций в модуле меток (thrones.tag
) исправлены импорты пользовательских тегов в шаблонах.
Принудительность атомарности транзакций для некоторых сущностей, пример: TopicServiceImpl.create
.
Исправление ошибочного отображения времени в RSS, порядка отображения ответов в темах, прекращение ленивой загрузки изображений в контенте.
Увеличение случайности генерации имени файла CKEditorHightHandler
.
Переработка вывода информации о пользователе и расчета очков.
Исправление стилистических ошибок. Например: неправильное расположение связанных тем, выход за границы контейнера описания тем на главной странице.
Повторение тематических меток (различие регистра) приводит к нарушению уникальности ключей, например: Map
, где App
и APP
являются различными ключами, что может вызвать нарушение уникальности в MySQL.
При выводе исключений в CommonControllerAdvice
, AJAX-ответ теперь включает HTTP-код.9. Локальное кэширование для закладок и лайков больше не активирует запрос данных.
При возможности получения null возвращаемых значений используется Optional для предотвращения передачи null.
Обновление вызовов API JDK. Например: Map.of, Set.of, List.of; Collections.unmodifiable заменено на copyOf; перебор кода аватара теперь использует Files.list.
ETС
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )