1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/subpu-jforum2

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 12.03.2025 16:35 83cc707

jforum2

Описание

jforum2 — это форк jforum, разработанный с использованием JDK 11+. Основные сущности и бизнес-интерфейсы jforum будут сохранены в неизменном виде, а реализация кода будет полностью переписана. Разработка и сборка выполняются с использованием OpenJDK 11+.

Изображение

:tada: Распределение событий

Основной веткой master используется RedisQ для замены встроенной системы Spring ApplicationEvent. RedisQ — это открытый проект на GitHub, который использует Redis для реализации модели публикации/подписки. Однако он не использует встроенную функцию Pub/Sub Redis. В проекте сделано следующее объяснение:

То, что предлагает Redis с помощью Pub/Sub, — это модель слушателя, где каждый подписчик получает каждое сообщение при активном соединении, но не получает его при отключении. Мы хотим, чтобы все потребители в конечном итоге получали все сообщения независимо от того, находятся они онлайн или офлайн.

В распределённой среде, где вы имеете несколько экземпляров вашего компонента потребителя (приложений), работающих одновременно, каждый экземпляр получает каждое сообщение, отправленное на канал. Эта библиотека гарантирует, что любое сообщение будет принято один раз для каждого логического потребителя, даже если работают несколько экземпляров этого компонента.Ветвь integration использует ActiveMQ для замены распределения событий основной ветви master. Это позволяет управляющему триггерировать события, которые могут быть подписываться и реагировать на них передними и задними конечностями. Для этого требуется, чтобы передний и задний конец были подключены к одному адресу сообщений. Версия ActiveMQ, используемая в среде разработки: 5.16.0.

:ghost: Объяснение Redis

JForum2 отличается от JForum тем, что является многопроцессным проектом. JForum может безопасно работать с использованием EhCache, но поскольку JForum2 использует разделённый дизайн проекта, ему требуется централизованное общедоступное кэширование. Преимущества очевидны: например, назначение модератора в административной части сразу видно на переднем конце! Для этого требуется, чтобы передний и задний конец были подключены к одному адресу Redis. Версия Redis, используемая в среде разработки: 3.0.504 (Примечание: Redis для Windows).

Изменения модулей1. Интегрирование модуля декоратора в модуль внимания. Эти два модуля выполняют кодирование/декодирование изображений и кодирование/декодирование содержимого темы. Интеграция модуля x.api в основной (x) модуль; бизнес-логика и методы persistence полностью основаны на сущностях исходного основного модуля. Внутри основного модуля постоянные сущности больше не содержат других объектов, за исключением Album. В шаблонах вместо связанных объектов используются копии этих объектов, например, связанный Album в Topic теперь хранится в виде TopicReplica, который наследуется от Topic.

Обновление модулей1. strategy модуль и com.apobates.forum.core.verify объединены в core.security, который отвечает за проверку конфигурационных файлов и проверку прав доступа сущностей.

  1. core.tag и core.tag.nlp модули объединены в core.nlp.

  2. Внутренний пакет com.apobates.forum.utils.ip из utils модуля был перемещён в event.utils модуль.

  3. Оригинальный Web модуль (trident) разделён на thrones и thrones.admin. Самописные JSP-теги были выделены в отдельный модуль thrones.tag, что позволяет использовать его как для фронта, так и для административной части.

  4. Модуль thumbnail переименован в bucket.thumbnail.

Обновление таблиц

  1. В объекте ActionEventDescriptor добавлен новый атрибут rodeMember, используемый для основного расчёта баллов участников. Например, если администратор "Пётр" присваивает теме отметку "+", то ActionEventDescriptor.rodeMember будет равен ID участника "Пётр" (Member.id), а ActionEventDescriptor.memberId — ID администратора (Member.id). Атрибуты processed и victim больше не используются.

  2. В объекте MemberOnline добавлены новые атрибуты: id(session_id) и memberNames(логины участников). Использование session_id в качестве первичного ключа позволяет отслеживать гостей. Логин гостя — это guest, а псевдоним — Guest#hash(ip). Запись состояния онлайн происходит через каждые три минуты, вместо того чтобы записывать каждый шаг пользователя.

  3. Больше не требуются объекты MemberContact и MemberRealAuthentication.4. В объекте Topic добавлена новая характеристика anony, которая указывает, является ли тема анонимной. Значение true указывает на анонимность, значение false — на открытость.

Улучшения функциональности

  1. Кодировка и декодировка изображений теперь выполняются для каждого отдельного соединения, а не для всего файла целиком.

  2. Вместо использования объекта Result из utils модуля используется стандартный объект Optional из JDK.

  3. При создании плагина-темы теперь выпускается событие PlugTopicPublishEvent, которое помогает различать темы, созданные через различные каналы.

  4. Добавлено использование Hibernate Validator для валидации данных. Это особенно полезно для административной части проекта thrones.admin.

  5. Добавлена зависимость Spring-Session. Проект не создаёт автоматически таблицы, связанные с Spring Session. Нужно самостоятельно создать эти таблицы, используя шаблон thrones/src/main/resources/META-INF/spring_session.sql.

  6. Для выполнения расписанных задач используется Quartz. Это позволяет выполнять задачи одновременно для фронтенда и административной части, не вызывая конфликта между ними. Также потребуется создать таблицы, используя шаблон member.impl/src/main/resources/META-INF/quartz_mysql_innodb.sql.

  7. Обновлён драйвер MySQL до версии com.mysql.cj.jdbc.Driver.8. Добавлена возможность анонимного создания тем участниками. Тем не менее, данные участника остаются в базе данных, но при этом они отображаются как анонимные.

  8. Рефакторинг стратегий реализации и выделение вызова API из контроллера в StrategyInterceptorAdapter, где контроллер использует аннотацию @Strategy.10. В ForumActionEnum добавлены новые действия: POSTS_QUOTE (цитата ответа), POSTS_REPLY_FORM (форма быстрого ответа).

  9. Добавлен временной буфер для времени вставки онлайн-записей, чтобы не было необходимости каждый раз при выполнении операции пользователя обновлять онлайн-статус.

  10. Реализация кэширования операционных записей с использованием массового сохранения CoreModuleActionEventAspect.AbstractCubbyHole.

  11. ETС

Другие исправления

  1. Из-за модификаций в модуле меток (thrones.tag) исправлены импорты пользовательских тегов в шаблонах.

  2. Принудительность атомарности транзакций для некоторых сущностей, пример: TopicServiceImpl.create.

  3. Исправление ошибочного отображения времени в RSS, порядка отображения ответов в темах, прекращение ленивой загрузки изображений в контенте.

  4. Увеличение случайности генерации имени файла CKEditorHightHandler.

  5. Переработка вывода информации о пользователе и расчета очков.

  6. Исправление стилистических ошибок. Например: неправильное расположение связанных тем, выход за границы контейнера описания тем на главной странице.

  7. Повторение тематических меток (различие регистра) приводит к нарушению уникальности ключей, например: Map, где App и APP являются различными ключами, что может вызвать нарушение уникальности в MySQL.

  8. При выводе исключений в CommonControllerAdvice, AJAX-ответ теперь включает HTTP-код.9. Локальное кэширование для закладок и лайков больше не активирует запрос данных.

  9. При возможности получения null возвращаемых значений используется Optional для предотвращения передачи null.

  10. Обновление вызовов API JDK. Например: Map.of, Set.of, List.of; Collections.unmodifiable заменено на copyOf; перебор кода аватара теперь использует Files.list.

  11. ETС

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/subpu-jforum2.git
git@api.gitlife.ru:oschina-mirror/subpu-jforum2.git
oschina-mirror
subpu-jforum2
subpu-jforum2
integration