Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OSGi в JEE приложении 
:(
    Опции темы
polosatij
  Дата 18.11.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



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


user posted image

в этой книге я не нашёл кучи вопросов по построении архитектуры не монолитного приложения.

кто-то применяет OSGi на практике? может рассказать общую структуру построения и впечатление от OSGi?



--------------------
PM   Вверх
serger
Дата 19.11.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 2
Всего: 5



Вот, начало... и далее в блоге много об "этом"..
http://samolisov.blogspot.com/2009/03/osgi.html


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
polosatij
  Дата 19.11.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(serger @  19.11.2009,  14:37 Найти цитируемый пост)
Вот, начало... и далее в блоге много об "этом"..
http://samolisov.blogspot.com/2009/03/osgi.html 


1). только основы в статье
2). ни слова нет об архитектуре JEE приложения


--------------------
PM   Вверх
COVD
Дата 19.11.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Предполагаю, что плагины на сервере не очень актуальны, потому что на сервере выгоднее реализовать распределенную архитектуру - набор самостоятельных приложений (сервисов). Возможно поэтому плагинно-модульные платформы обычно называют RichClient ... , т.е. применяется к клиентскому приложению. 

Это сообщение отредактировал(а) COVD - 19.11.2009, 16:56
PM MAIL   Вверх
polosatij
Дата 19.11.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(COVD @  19.11.2009,  15:47 Найти цитируемый пост)
набор самостоятельных приложений (сервисов).


мне очень тяжело понять, как достичь нескольких сервисов, которые "должны иметь общие классы", например, для базы данных.


--------------------
PM   Вверх
COVD
Дата 19.11.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Ничего нового, использовать библиотеки. Так же как используют log4j например. 

Плагинно-модульная архитектура интегрирует несколько независимых компонентов в одно приложение, работающее под одной виртуальной машиной. Термин embedded мелькает там поэтому. И платформа обеспечивает возможности динамического подключения\отключения компонентов, как если бы они были независимыми приложениями. На серверной стороне нет нужды имитировать это средствами платформы. Можно физически запустить компоненты под разными JVM, а еще лучше и на разных компьютерах, а еще лучше и в нескольких экземплярах (кластеризация),  т.е. построить нормальное распределенное приложение (а не имитировать его в "одном флаконе"). 

Это сообщение отредактировал(а) COVD - 19.11.2009, 17:29
PM MAIL   Вверх
polosatij
  Дата 20.11.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(COVD @  19.11.2009,  16:06 Найти цитируемый пост)
Ничего нового, использовать библиотеки. Так же как используют log4j например. 


так не получится. ты не можешь в runtime вытащить библиотеку и вставить новую на это место, например.


Цитата(COVD @  19.11.2009,  16:06 Найти цитируемый пост)
Плагинно-модульная архитектура интегрирует несколько независимых компонентов в одно приложение, работающее под одной виртуальной машиной. Термин embedded мелькает там поэтому. И платформа обеспечивает возможности динамического подключения\отключения компонентов, как если бы они были независимыми приложениями. На серверной стороне нет нужды имитировать это средствами платформы. Можно физически запустить компоненты под разными JVM, а еще лучше и на разных компьютерах, а еще лучше и в нескольких экземплярах (кластеризация),  т.е. построить нормальное распределенное приложение (а не имитировать его в "одном флаконе"). 


у тебя получится несколько "глупых" флаконов


Цитата(COVD @  19.11.2009,  15:47 Найти цитируемый пост)
Предполагаю, что плагины на сервере не очень актуальны,


быть того не может, т.к. новый jboss5 и кое-какие сервера уже переходят на концепт OSGi


--------------------
PM   Вверх
COVD
Дата 20.11.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

ты не можешь в runtime вытащить библиотеку .. у тебя получится несколько "глупых" флаконов

Надобности в смене библиотек "на лету" не возникает, если приложение состоит из набора "глупых" флаконов. Просто перезапускается "флакон"(можно мысль развить до абсурда и допустить, что "флакон", т.е. небольшое приложение, выполняющее одну задачу, состоит из одного класса). Это проще и , следовательно, безопаснее, чем заменять классы в рантайме. Это как ремонтировать движущийся автомобиль. Умеющие это делать заслуживают восхищения, но надежнее все же в гараже.   

Цитата

быть того не может, т.к. новый jboss5 и кое-какие сервера уже переходят на концепт OSGi 

А интересно, заденет ли это пользователей jboss5 ? . Не разработчиков компонентов jboss5, а программистов, которые пишут приложения для работы под jboss5.  
Сама - то концепция, как готовый сценарий, наверное много где может быть полезна. Я высказывал мнение, что на серверной стороне держать все в одном "флаконе" нет смысла.  А платформы Нетбинс и Эклипс  вроде заточены под одно приложение (и потому они RichClient). Мне они представляются как реализация SOA внутри приложения.   

Это сообщение отредактировал(а) COVD - 20.11.2009, 18:10
PM MAIL   Вверх
polosatij
Дата 20.11.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8





Цитата(COVD @  20.11.2009,  16:45 Найти цитируемый пост)
Надобности в смене библиотек "на лету" не возникает, если приложение состоит из набора "глупых" флаконов. Просто перезапускается "флакон"(можно мысль развить до абсурда и допустить, что "флакон", т.е. небольшое приложение, выполняющее одну задачу, состоит из одного класса). Это проще и , следовательно, безопаснее, чем заменять классы в рантайме. Это как ремонтировать движущийся автомобиль. Умеющие это делать заслуживают восхищения, но надежнее все же в гараже.   


http://www.osgi.org/About/WhyOSGi


Цитата(COVD @  20.11.2009,  16:45 Найти цитируемый пост)
А интересно, заденет ли это пользователей jboss5 ? .


причём тут пользователи?



Цитата(COVD @  20.11.2009,  16:45 Найти цитируемый пост)
а программистов, которые пишут приложения для работы под jboss5.  


естественно.. там, наверняка, есть уже какие-то интерфейсы

--------------

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

1). в runtime на одной машине было бы очень не плохо поменять части, нежели перезапускать приложение полностью
2). если приложение будет такое модульное, что можно будет менять части, то можно давать людям какие-то определённые части на разработку программного обеспечения, открыв часть svn
3). посмотри apple телефон. если падает какое-то приложение, то не падает сам телефон.

и т.д.

меня интересует реализация архитектуры не монолитного приложения   smile 


--------------------
PM   Вверх
COVD
Дата 20.11.2009, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



В моем понимании:
1. не монолитное = распределенное.
2. приложение, построенное на плагинной ( модульной ) архитектуре - монолитное, если оно бегает в одной виртуальной машине (отсюда и необходимость "update bundles on the fly" , успешной реализацией которой так гордятся (заслуженно, конечно) авторы ).

Это сообщение отредактировал(а) COVD - 20.11.2009, 19:16
PM MAIL   Вверх
polosatij
  Дата 20.11.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8




Цитата(COVD @  20.11.2009,  17:50 Найти цитируемый пост)
1. не монолитное = распределенное.


имея базу, не важно где запускать модуль. отсюда и распределённое.


Цитата(COVD @  20.11.2009,  17:50 Найти цитируемый пост)
2. приложение, построенное на плагинной ( модульной ) архитектуре - монолитное, если оно бегает в одной виртуальной машине (отсюда и необходимость "update bundles on the fly" , успешной реализацией которой так гордятся (заслуженно, конечно) авторы ).


так.. терь с этого места, по подробнее  smile 




--------------------
PM   Вверх
COVD
Дата 20.11.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

имея базу, не важно где запускать модуль. отсюда и распределённое.

Так что, OSGi допускает, что модули или плагины запускаются удаленно? Тогда замечательно и привлекательно для "серверостроения". 
Цитата

по подробнее  


?

PS.
Процитировал текст, слово "bundle" застряло в голове и пришло просветление smile. OSGi обновляет "на лету" не отдельно взятый класс, а "bundle", т.е. модуль целиком. И может это делать потому, что общение модуля с остальным окружением контролируется OSGi платформой.  Точно также, например, Томкат умеет обновлять "на лету" страницу JSP, которая в контексте OSGi может рассматриваться как bundle, т.е. отдельный модуль. Эта "фича" OSGi конечно удобна для любого приложения независимо от его размера. Для монстра jboss5 тем более.

В общем, спасибо, polosatij, за топик. Мне кажется, до меня стало доходить, что такое OSGi smile.   



Это сообщение отредактировал(а) COVD - 20.11.2009, 22:46
PM MAIL   Вверх
COVD
Дата 22.11.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Кроме реализаций OSGi существует также модульная платформа Нетбинс. Она появилась до OSGi и на ее основе было  написано много корпоративных приложений до того, как ее стали популяризировать. В сравнениях с OSGi обычно отмечают, что они практически идентичны. И только в русскоязычных источниках типа rsdn я встречал высказывания, что OSGi - круто, а Нетбинс - "ацтой". Обьективно OSGi более популярен. Существует много имплементаций. Cамая популярная, наверное, Equinox. Spring конечно же подсуетился со Spring OSGi. Поэтому Нетбинс предпринимает усилия по сближению.  

Меня модульная архитектура интересует применительно к клиентскому приложению. Наша серверная часть уже и так функционирует, как распределенный набор компонентов и сервисов. На нашем клиенте это более актуально потому, что постоянно добавляются новые возможности для разных категорий пользователей и приложение "распухает". Разнообразие клиентских компонентов богаче серверных. Естественно, новые возможности удобно добавлять в виде модулей. 

Поэтому предстоит перевод клиентского GUI Swing приложения на модульную архитектуру. Однако я пока не определился с платформой. Используемый нами Нетбинс привлекателен тем, что платформа уже включена в JDK6 и IDE "заточено" под разработку.   

Это сообщение отредактировал(а) COVD - 22.11.2009, 20:44
PM MAIL   Вверх
polosatij
  Дата 23.11.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(COVD @  22.11.2009,  18:09 Найти цитируемый пост)
Меня модульная архитектура интересует применительно к клиентскому приложению... 


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

Цитата(COVD @  20.11.2009,  18:43 Найти цитируемый пост)
В общем, спасибо, polosatij, за топик. Мне кажется, до меня стало доходить, что такое OSGi


ню, если что накопаешь, свисти  smile "а то эти, ни болта не рубят" (с) мама не горюй smile


--------------------
PM   Вверх
COVD
Дата 23.11.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

меня она интересует по многим причинам.. хотелось бы отдатъ например, на разработку, только часть приложения на оффшоринг, а не полностью


Я подозреваю, что модульность тут не главное. Фреймворк не поможет разработать интерфейс взаимодействия, который необходим стороннему разработчику компонента. Фреймворк лишь берет на себя хлопоты подключения - поиск плагина, формальную проверку соответствия интерфейсов, версии, и возможность подключения "on the fly".  Использование фреймворка остро необходимо для массовых продуктов типа IDE, для которых все кому не лень желают писать плагины. Обуздать эту творческую активность масс можно только формализовав процедуру подключения, которая и возложена на фреймворк. А в небольшом проекте с ограниченным количеством исполнителей фреймворк является удобным инструментом, но не абсолютной необходимостью. По крайней мере, наверное можно начать проект с разработки интерфейсов компонентов, а "менеджмент" в лице фреймворка, добавить позднее.

PS. Конечно, это общая "розовая" мечта - творить интерфейсы и ... раздавать их на реализацию сторонним разработчикам. А еще лучше - рисовать прямоугольнички со стрелочками и ... раздавать их исполнителям. А еще лучше сформулировать идею на словах и ...  А еще лучше .....  smile  


Это сообщение отредактировал(а) COVD - 23.11.2009, 17:40
PM MAIL   Вверх
polosatij
Дата 23.11.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(COVD @  23.11.2009,  16:26 Найти цитируемый пост)
Я подозреваю, что модульность тут не главное. Фреймворк не поможет разработать интерфейс взаимодействия, который необходим стороннему разработчику компонента.


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


Цитата(COVD @  23.11.2009,  16:26 Найти цитируемый пост)
А в небольшом проекте с ограниченным количеством исполнителей фреймворк является удобным инструментом, но не абсолютной необходимостью. 


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

1. чистоту написания кода, понимание его программировать и уровень должен быть не минимум: понимание патернов, умение их реализовывать, понимание затруднительных ситуаций, не только на словах, но и умение обходить их. этот фактор никогда не понять по человеку и его резюме, это видно только тогда, когда он немного попрограммирует в проекте. и тут всплывает тот фактор, что он может успеть натворить ерунды, с которой придётся что-то делать
2. умение и знание технологий, а если нет, ему нужно дать мин. 2 недели на быстрый разгон + 2 недели на написание чего-нибудь. "а время летит, время..." (с)
3. конечно, нуна нанимать профи. но бюджет, к сожалению, пока не резиновый и приходится работать с "авось повезёт". причём многие их них вылетают и редкие единицы лишь остаются..


твоё понимание плагина похоже на частичное моё представление модульности. почему частичное? потому как модульность может это и ещё ... в придачу.

наверно, мне надо ещё посмотреть, как строятся плагины eclipse. мне почему-то кажется я расчищу для себя определённые не понимания в моей голове. вот только, было бы время  smile 


--------------------
PM   Вверх
polosatij
Дата 23.11.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



нашёл сегодня такую презентацию:

не-зная@не-нажимать.com

в двух слова обламывают представления и рассказывают, что и как smile


--------------------
PM   Вверх
COVD
Дата 23.11.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

тут хочу с тобой поспорить

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

обламывают представления 

ну конечно это все напоминает "Вот возьмем Hibernate ( подставьте любой фреймворк ) и легко и быстро получим на профессиональном уровне ... проблемы с lazy ( подставьте свое)" 
   
PM MAIL   Вверх
polosatij
Дата 23.11.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(COVD @  23.11.2009,  19:24 Найти цитируемый пост)
по возможности предпочел разрабатывать самостоятельные приложения,


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

у нас "небольшой" сайтик из 20-30 страниц (ню и две их них генерируются на лету), где 5 из них занимаются сложной (очень!) логикой а с остальными всё совсем просто. мы пишем небольшую поисковую систему, где между первой страницой и второй, натыкано очень много логики


--------------------
PM   Вверх
COVD
Дата 23.11.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



У вас же наверное взаимодействие клиента с сервером обычные синхронные запрос-ответ. Превращаете "сайтик" в 20-30 сайтиков, состоящих из одной index.jsp и считаете, что реализуете REST сервисы. Логику всю выносите в отдельные консольные приложения, с которыми сервлеты могут общаться по локальной сети через, к примеру, RMI .  И вот эти приложения (не веб) уже при желании можно дробить на модули, т.е. строить по плагинно-модульной архитектуре. Если они достаточно большие. А где тут место для жбоссов я не знаю.  

Это сообщение отредактировал(а) COVD - 23.11.2009, 22:23
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.