Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
950
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
940
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1725
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как лучше всего начать работу с OSGI?
Что делает module/service/bit функциональности приложения особенно хорошим кандидатом для модуля OSGi?
Я заинтересован в использовании OSGi в своих приложениях. Мы являемся магазином Java и довольно широко используем Spring, поэтому я склоняюсь к использованию динамических модулей Spring для платформ обслуживания OSGi(tm). Я ищу хороший способ включить немного OSGi в приложение в качестве пробной версии. Кто-нибудь здесь использовал эту или подобную технологию OSGi? Есть ли какие-то подводные камни?
@Nicolas-Спасибо, я это уже видел. Это хороший учебник, но я больше ищу идеи о том, как сделать мой первый "real" OSGi bundle, в отличие от примера Hello World.
@david-Спасибо за ссылку! В идеале, с приложением greenfield, я бы спроектировал все это, чтобы быть динамичным. Однако прямо сейчас я ищу, чтобы ввести его в небольшой фрагмент существующего приложения. Предполагая, что я могу выбрать любую часть приложения, какие факторы следует учитывать, чтобы сделать эту часть лучше или хуже в качестве OSGi морской свинки?
Ну, так как вы не можете иметь одну часть OSGi и одну часть не-OSGi, вам нужно будет сделать все ваше приложение OSGi. В самой простой форме вы делаете один OSGi bundle из всего вашего приложения. Очевидно, что это не лучшая практика, но она может быть полезна, чтобы получить представление о развертывании bundle в контейнере OSGi (Equinox, Felix, Knoplerfish и т. д.).
Чтобы перейти на следующий уровень разбиения приложения на компоненты, компоненты обычно должны иметь набор обязанностей, которые можно изолировать от rest вашего приложения с помощью набора интерфейсов и зависимостей классов. Идентификация этих чисто вручную может варьироваться от довольно простого для хорошо разработанного высоко Связного, но слабо связанного приложения до кошмара для взаимосвязанного исходного кода, с которым вы не знакомы.
Некоторая помощь может прийти от таких инструментов, как JDepend , которые могут показать вам связь пакетов Java с другими пакетами/классами в вашей системе. Пакет с низкой эфферентной связью должен быть легче извлечь в OSGi bundle, чем пакет с высокой эфферентной связью. Еще более глубокое понимание архитектуры можно получить с помощью профессиональных инструментов, таких как Structure 101 .
Чисто на техническом уровне, работая ежедневно с приложением, которое состоит из 160 OSGi пакетов и используя Spring DM, я могу подтвердить, что переход от "normal" Spring к Spring DM в значительной степени безболезнен. Дополнительное пространство имен и тот факт, что вы можете (и должны) изолировать вашу OSGi-специфическую Spring конфигурацию в отдельных файлах, делает ее еще проще иметь как с OSGi deployment сценариями, так и без них.
OSGi-это глубокая и широкая компонентная модель, документация, которую я рекомендую:
- Спецификация OSGi R4: получите PDFs спецификации ядра и компендиума, они каноничны, авторитетны и очень удобочитаемы. Имейте ярлык к ним под рукой в любое время, вы будете консультироваться с ними.
- Прочитайте о OSGi лучших практиках, есть большой набор вещей, которые вы можете сделать, но несколько меньший набор вещей, которые вы должны сделать, и есть некоторые вещи, которые вы никогда не должны делать (DynamicImport: * например).
Некоторые ссылки:
- Используя Apache OSGi лучшие практики и Феликс
- Питер Криенс и Би Джей Харгрейв в презентации Sun по OSGi лучшим практикам
- одна из ключевых концепций OSGi-это сервисы, узнайте, почему и как они вытесняют шаблон слушателя шаблоном доски
-
Группа Spring DM Googleочень отзывчива и дружелюбна по моему опыту
Когда вы изучаете новую технологию, богатый инструментарий позволяет вам заниматься вещами без больших головных болей. На данный момент сообщество в ops4j.org предоставляет богатый набор инструментов под названием "PAX", который включает в себя:
- Pax Runner: бегите и легко переключайтесь между Felix, Equinox, Knopflerfish и Concierge
- Pax Construct : построить, организовать & построить OSGi проектов с maven легко
- Pax Drone: протестируйте свои пакеты OSGi с Junit, будучи независимым от фреймворка (использует PaxRunner)
Тогда есть много реализаций сервисов OSGi compendium:
- Лесозаготовки Пакс (лесозаготовки ),
- Pax Web (http сервис),
- Веб-Пакс расширитель (военная поддержка),
- Pax Coin (конфигурация),
- Pax Shell (shell реализация, часть следующего выпуска osgi)
- и многое другое. ..
а еще есть полезное, рамочное независимое сообщество, - но это сейчас реклама ;-)
Ваше существующее приложение монолитного или многоуровневой в отдельных processes/layers?
Если они многоуровневые, то можно преобразовать middle/app-tier для запуска в контейнере OSGi.
По опыту моей команды, мы обнаружили, что попытки делать веб-вещи в OSGi болезненны. Другими болевыми точками являются Hibernate и Jakarta Commons Logging.
Я нахожу спецификации OSGi довольно удобочитаемыми, и я рекомендую вам распечатать блок-схему, которая показывает алгоритм загрузки класса. Я гарантирую, что у вас будут моменты: "почему я получаю NoClassDefFoundError?": блок-схема скажет вам, почему.
Попробуйте http://neilbartlett.name/blog/osgibook/ . В книге есть практические примеры с OSGi лучшими практиками.
Попробуйте http://njbartlett.name/files/osgibook_preview_20091217.pdf
OR
Вторая-это не та книга, которую я сам читал, но я слышал о ней много хорошего.
Первое было очень полезно для меня. Сначала он проводит вас по архитектуре, а затем это руки на OSGi.
Есть пара мыслей, которые нужно иметь в виду, если вы начинаете с OSGi.
Как уже упоминалось в другом месте этой темы, знание о загрузке классов действительно важно. По моему опыту, каждый человек рано или поздно сталкивается с проблемами, связанными с этим.
Еще одна важная вещь, которую нужно помнить: никогда не держите ссылки! Взгляните на шаблон доски, на котором построена концепция сервисов OSGi (см. ссылку в одном из других ответов).
По моему опыту, вам не следует пытаться преобразовать монолитное приложение в приложение на основе OSGi. Это обычно приводит к плохому и неуправляемому беспорядку. Начать заново.
Загрузите одну из свободно доступных автономных реализаций OSGi. Я нашел Knopflerfish довольно хорошим и стабильным (я использую его во многих проектах). Он также поставляется с большим количеством исходного кода. Вы можете найти его здесь: http://www.knopflerfish.org
Еще один хороший учебник можно найти здесь. https://pro40.abac.com/deanhiller/cgi-bin/moin.cgi/OsgiTutorial
Питер Криенс из Альянса OSGi дал хорошее интервью: http://www.infoq.com/interviews/osgi-peter-kriens . Его домашнюю страницу и блог (который всегда хорошо читается можно найти здесь: http://www.aqute.biz
Мне очень нравятся обучающие программы Apache Felix . Однако я думаю, что в целом использование OSGi в вашем приложении не является одним из тех "let's use this framework, because it's hype" решений. Это скорее вопрос дизайна, но тогда все, что дает вам OSGi с точки зрения дизайна, вы можете иметь и с vanilla Java.
Что касается среды выполнения, вы не можете просто добавить существующее приложение и сделать его OSGi включенным. Это должен быть дизайн, чтобы быть динамичным. Spring DM позволяет легко скрыть это от вас, но это все еще есть, и вам нужно знать об этом.