Web-модули Jsf

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Доброго времени суток!
На работе поставили задачу, проработать возможность написания модулей(плагинов) для веб приложения, основанного на использовании jsf(primefaces) и Gson. Интересует следующий вопрос — возможно ли написание подключаемых в рантайме модулей, без пересборки приложения. Вариант с пересборкой приложения тоже интересует, но модули должны быть максимально независимы. В идеале было бы — если бы можно было подкинуть jar(war), который включает дополнительный функционал, к приложению. И как в таком случае будет происходить обмен данными(например, id сессии, который геренит бд, для юзера). Буду очень благодарна, если подскажете, что почитать по теме.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Что бы делать так как вы хотите необходимо использовать OSGi

Придется сделать кое какую дополнительную инфраструктуру и перейти на бандлы вместо просто .jar

Придется сделать кое какую дополнительную инфраструктуру

можно подробнее?

почитайте статьи по модульным системам на java поймете...
100% придется заметно переделать приложение.
en.wikipedia.org/wiki/OSGi
Еще почитайте о Equinox
но если честно — с таким вопросами вы это скорее всего не сделаете. Задача весьма серьезная и требует людей с опытом в OSGi. Вашему руководству стоит подумать а так ли они хотят модульность.
JSON пишется не так btw. Видимо не знакомый термин

JSON пишется не так btw. Видимо не знакомый термин

code.google.com/p/google-gson — я это имела ввиду

За ответ спасибо.

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

Может можно обойтись нуу например деплоем на другой сервер пересобраного приложения и переключением инстанса на новый в проксируещем веб сервере, как то так... Это я вам как человек который пишет огромное модульное приложение пишет говорю :)

К сожалению(или не очень), с предыдущей монолитной версией приложения наступили на грабли, которые теперь решили обойти вынесением определенного функционала в модули или плагины. Сегодня решили, что единственное требование — полная независимость базового функционала от модулей, ну и модулей друг от друга.

На доу нет джава-девелоперов???

Возможно, дело в том, что задача довольно специфическая, непростая, и требует ощутимого вложения времени(!) или же аналогичного опыта чтобы дать Вам ответ.

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

Не все ведь работали с данными технологиями, я, например, с JSF не работал. А уж сказать можно ли скомпилировать или подключить JSF в runtime я даже не знаю. Попробуйте сделать маленький пример с динамическим подключением JSF. Для меня этот вопрос самый сомнительный в Вашей задаче. Подключить JAR (с OSGi) или просто class (даже без OSGi) можно, но стоит ли так подключать и JSF ?
Может быть, стоит формировать JSF уже на сервере, по каким-то заданным правилам из xml.
Или, можно ли JSF отрендерить на сервере из строки ? Нужно искать, пробовать.

Потом, тот кто дал Вам задание — это технический специалист и он дал Вам какие-то ограничения или же нет?

Например, ведь можно сделать систему в которой не jar-файлы подключаются, а xml документы, а уже сам Ваш код используя данный xml выполнил бы и функционал и view. Такой подход мне нравится больше всего. Хотя, опять же, я не знаю задания в целом.

А еще можно сделать генерацию функционала в *.java на стороне сервера и откомпилировать в runtime .

Можно вообще для описания функционала использовать скриптовый язык, например java script, и выполнять его на server side.

Если времени очень мало можно использовать не OSGi а загружать класс в рантайме. А потом уже перейти на OSGi, если надо.

Сложно дать совет, легко запутать.

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

Спасибо. Действительно, я попробую сделать примеры, если вопросы останутся — уточню. У меня у самой плохо складывается в голове вся картина, точнее сформулировать вопрос не получилось.

Підписатись на коментарі