Java и OSGI

Bundle е най – малката модулна единица, с която може да се работи. Например „Hello, World!“ приложение ще се реализира като един bundle, който изписва „Hello, World!“ в конзолата, когато се пусне за първи път. Един bundle се състои от Java класове и други ресурси, които заедно преодоставят функционалност. Bundle-ите могат да споделят Java пакети помежду си. Bundle, който предоставя пакет се нарича exporter, а такъв, който използва предоставен пакет се нарича importer. Bundle-ите се пакетират като JAR файлове, които могат да бъдат инсталирани/деинсталирани/пускани/спирани в работещ OSGI, без това да изисква рестартиране на приложението.

Един bundle съдържа описание (метаинформация) за себе си във META-INF/MANIFEST.MF файл. Такава информация е:

  • Името на класа, който стартира и спира дадения bundle.
    • Bundle-Activator: org.elsys-bg.sample.Activator
  • Име на bundle-а, предназначено за крайния потребител.
    • Bundle-Name: Firewall
  • Системно име на bundle-а
    • Bundle-SymbolicName: org.elsys-bg.sample
  • Версия на bundle-а
    • Bundle-Version: 1.1
  • Пакети, които предоставя
    • Export-Package: org.osgi.util.tracker;version=1.3
  • Пакети, от които зависи
    • Import-Package: org.osgi.util.tracker,org.osgi.service.io;version=1.4
  • Друг bundle, на който зависи
    • Require-Bundle: org.elsys-bg.examples

Bundle-SymbolicName и Bundle-Version трябва да идентифицират уникален bundle, т.е. не може да има два bundle-а, които имат еднакво име и версия.

Пълният списък от атрибути може да бъде намерен в OSGI спецификацията

Публикувано в ModularJava. Постоянна връзка.