|
|
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, я сейчас занимаюсь разработкой веб приложения и мне нужно реализовать простую систему плагинов. Функционал минимальный, пользователь через веб морду загружает jar файл, дальше в веб морде его запускает, также может остановить его и удалить. Использовать OSGi смысла нету потому система очень простая. Само приложение это обычный веб сайт, активно используется экосистема Spring'а(Spring MVC, Spring Data JPA, ect). В самих плагинах будут Spring контейнеры, POJO и прочее, загружатся все это должно одним класлоадером. Плагины ориентированны именно на пользователя у которого нет доступа к серверу. Вопрос собственно касается больше сервера приложений(у нас используется WildFly), в рамках десктоп приложения я бы взял и просто загружал jar'ники UrlClassLoader'ом из определенной директории, а вот как это будет выглядеть в рамках сервера приложений когда мы имеем монолитный war'ник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:15 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
WildFly этот EJB умеет? Можно EJB модулями. В старых версиях JBoss были ещё специальные модули JBoss Service. Не знаю, остались ещё в WildFly. Надо доку смотреть. Можно просто взять Java Plug-in Framework и прикрутить к приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:21 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
Конкретно как реализовать саму систему плагинов я знаю с этим проблем нету я немного не понимаю как будет происходить сохранение jar'ника и в какую директорию и как его загружать, так же UrlClassLoader'ом? Тоесть вот например пользователь через веб морду загружает на сервер плагин его нужно как то сохранить и потом загрузить класлоадером. Я просто до этого не сталкивался с веб приложения занимался больше декстопом и немного не понимаю как все это будет происходить в рамках сервера приложений, и как вообще подобное делается в рамках сервера приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:28 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
mfaustinКонкретно как реализовать саму систему плагинов я знаю с этим проблем нету Вы меня сейчас куда послали? mfaustinя немного не понимаю как будет происходить сохранение jar'ника и в какую директорию и как его загружать Точно так же как любой другой бинарник в web приложении. Либо в базу. Либо в файловую систему. Если вопрос только в этом, то наверное его и стоило задать? mfaustinтак же UrlClassLoader'ом? В зависимости от того где хранить jar-ник. mfaustinТоесть вот например пользователь через веб морду загружает на сервер плагин его нужно как то сохранить и потом загрузить класлоадером. Первый вопрос про плагины. Теперь вопроса про плагины нет, загружаем класслоадером. Ну, ок. mfaustinЯ просто до этого не сталкивался с веб приложения занимался больше декстопом и немного не понимаю как все это будет происходить в рамках сервера приложений, и как вообще подобное делается в рамках сервера приложений? Даю подсказку. Сервер приложений реализован на JSE. war модуль загружается своим отдельным класслоадером. Его, вероятно, нужно будет сделать родительским для всех ваших новых загрузчиков. Но зачем я это пишу? Вы же и так прекрасно знаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:41 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
mfaustin, ServletContext.TEMPDIR чем-то не устраивает? А как Вы собираетесь разруливать ситуацию, когда два пользователя захотят загрузить один и тот же класс, но разных версий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:41 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Извините я немного не так выразился. А не подскажите как называется war класслоадер? Сергей Арсеньев, Поправка, пользователь с правами администратора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 19:55 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
mfaustinИзвините я немного не так выразился. А не подскажите как называется war класслоадер? Какая разница как он называется??? Каждый сервер его по-своему реализует. http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html mfaustinПоправка, пользователь с правами администратора) Сергей намекает, на то что без OSGi в кустарной реализации вас ожидает много интересных сюрпризов. Таких как ClassCastException (возможно его вариации вызванные той же причиной) и утечка памяти. Или вы про эти нюансы динамической загрузки классов тоже знаете? И, кстати, такими вопросами уже лет 7 как никто не задается потому что вот: http://docs.oracle.com/javase/6/docs/api/javax/script/ScriptEngineManager.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 20:03 |
|
||
|
Система плагинов в веб приложении
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Про нюансы динамической загрузки в курсе. Ага оно и видно все пишут на js))) странно правда почему появился GWT... Вопрос решил, тему можно закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2014, 20:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38637195&tid=2127208]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 468ms |

| 0 / 0 |
