Структура платформы веб-приложений для бизнеса - PullRequest
1 голос
/ 05 марта 2011

Я хотел бы разработать веб-приложение на Java / Spring / Hibernate, служащее бизнес-платформой, к которой я мог бы подключать плагины (например, плагин CRM, программный плагин, плагин продаж).Эти плагины могут зависеть от других плагинов в виде дерева.Родительский проект будет упакован как war , имеющий все основные настройки и внешний вид (Spring-конфигурации, CSS, скрипты), готовое управление пользователями и группами, настройки безопасности и т. Д.

В целом, я хотел бы, чтобы он вел себя и выглядел немного как Joomla, но создавался с использованием разных инструментов для разных целей.И у меня есть несколько вопросов, касающихся этого проекта:

  1. Известны ли вам какие-либо проекты с открытым исходным кодом, предлагающие такую ​​платформу, готовую к работе?
  2. Если нет, то применим ли Maven для управления этимиплагины?
  3. Каков наилучший способ упаковки и развертывания этих плагинов?

И, наконец, что не менее важно, это правильный путь, или это тупик?Было бы лучше создать отдельное веб-приложение для этих бизнес-потребностей?

Ответы [ 4 ]

1 голос
/ 05 марта 2011

Существует множество способов создания модулей плагинов.Некоторые идеи:

Вы можете упаковать каждый модуль плагина как jar, а в корень classpath этого jar поместить файл конфигурации Spring с конфигурацией bean, так что если вы используете определенный плагин.Вы можете "включить" компоненты этого пакета в веб-приложении, просто добавив этот файл в параметр contextConfigLocation в своем файле web.xml:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:module1.xml
        classpath:module2.xml
        classpath:module3.xml
        classpath:module4.xml
    </param-value>
</context-param>

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

Некоторое время назад я структурировал способ автоматического горячего обнаружения (во время выполнения, без необходимости перезапуска приложения) плагинов в настольном приложении путем обнаружения всех реализаций определенногоабстрактный класс (контракт) в classpath.Итак, все, что мне нужно было сделать, чтобы создать новый плагин, - это реализовать этот «контракт».Для этого я использовал некоторые вкусности "загрузчика классов".

Говоря о "модулях", может быть, вы хотели бы увидеть кое-что о OSGi

Ну ...это некоторые идеи.Я надеюсь, что это поможет в любом случае.; -)

0 голосов
/ 07 сентября 2015

*

И последнее, но не менее важное: это правильный путь или тупик?Было бы лучше создать отдельное веб-приложение для этих нужд бизнеса?

*

У меня есть негативный опыт в области модульности с JPA.Например, @Entity Customer включен в модуль CRM, но интенсивно используется от других.Первая естественная идея, что один модуль = собственный персистентный модуль очень трудно реализовать, JPA должен быть во всех модулях, а идея модульности зашла в тупик, модули не разделены.модульности "в процессе и в JAR", строения вида строятся, некоторые меню / сущности и т. д. относятся к "модулям" в более легком смысле

0 голосов
/ 07 марта 2011

Вам известны какие-либо проекты с открытым исходным кодом, предлагающие готовую к работе платформу?

Посмотрите на Spring Roo

Если не подходит maven для управления этими плагинами?

Да, это так.Узнайте, как AppFuse использует его.

Каков наилучший способ упаковки и развертывания этих плагинов?Опять же, проверьте, как Spring ROO или AppFuse это делают.

Надеюсь, это поможет.

0 голосов
/ 05 марта 2011

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

Теперь для практических рекомендаций.«Плагины» - очень расплывчатое понятие.Я использовал плагины

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

Вопрос сейчас в том, как это работает.Перехватчик метода работает с использованием org.aopalliance.intercept.MethodInterceptor.Фоновые процессоры используют TimerTask.Дополнительные представления в веб-приложении используют маршрутизацию Spring MVC.

Мои плагины упакованы как JAR-файлы и обнаруживаются во время запуска приложения как контексты приложения Spring.

Это все очень общее, но может датьвам несколько идей, чтобы уйти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...