Podczas uruchamiania Equinoksa poleceniem
java -jar org.eclipse.osgi_3.5.0.v20080804-1730.jar -consoleuruchomiony zostaje automatycznie pakunek systemowy - org.eclipse.osgi. Ma on identyfikator 0 i będzie tak na każdej platformie OSGi (oczywiście nazwa pakunku systemowego będzie inna, specyficzna dla danej platformy).
jlaskowski@work /cygdrive/c/apps/equinoxPrzy pierwszym uruchomieniu tworzony jest katalog configuration w katalogu bieżącym (z możliwością wskazania innego parametrem -configuration).
$ java -jar org.eclipse.osgi_3.5.0.v20080804-1730.jar -console
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.0.v20080804-1730
jlaskowski@work /cygdrive/c/apps/equinoxInstalacja pakunków odbywa się poleceniem install <plik_pakunku>. Jeśli założę katalog plugins (na razie przyjmijmy, że jest to nazwa całkowicie przypadkowa), a w nim umieszczę pakunek spring-osgi-core-1.2.0-m2-SNAPSHOT.jar, jego instalacja będzie wyglądała następująco:
$ ls -lt
total 988
drwxr-xr-x+ 3 jlaskowski None 0 Sep 28 21:27 configuration
-rwx------+ 1 jlaskowski None 1009283 Sep 22 16:07 org.eclipse.osgi_3.5.0.v20080804-1730.jar
jlaskowski@work /cygdrive/c/apps/equinoxKolejne uruchomienie platformy OSGi gwarantuje uruchomienie pakunków do stanu, który był bieżącym przed zatrzymaniem całej Platformy, np. poleceniem close dla Equinoksa. Właśnie katalog configuration jest katalogiem, gdzie utrwalone zostają informacje o stanie pakunku (i skasowanie go powoduje skasowanie danych pakunków, co równoważne jest z uruchomieniem początkowym Equinoksa).
$ java -jar org.eclipse.osgi_3.5.0.v20080804-1730.jar -console
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.0.v20080804-1730
osgi> install file:plugins/spring-osgi-core-1.2.0-m2-SNAPSHOT.jar
Bundle id is 1
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.0.v20080804-1730
1 INSTALLED org.springframework.bundle.osgi.core_1.2.0.m2-SNAPSHOT
jlaskowski@work /cygdrive/c/apps/equinoxPrzy pojedyńczym pakunku sprawa jego instalacji i uruchomienia nie jest poważnym zadaniem. Sprawa zaczyna się komplikować, kiedy przychodzi nam uruchomić, powiedzmy, 20 pakunków. Wtedy pozostaje nam liczyć na poprawny katalog configuration, albo...config.ini.
$ java -jar org.eclipse.osgi_3.5.0.v20080804-1730.jar -console
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.0.v20080804-1730
1 INSTALLED org.springframework.bundle.osgi.core_1.2.0.m2-SNAPSHOT
Plik config.ini w katalogu configuration jest plikiem konfiguracyjnym Equinoksa, w którym definiuje się, jakie pakunki mają zostać uruchomione i gdzie one w ogóle się znajdują. Dodając do tego wsparcie pakunku org.eclipse.update.configurator nie musimy umieszczać nazw wszystkich pakunków do instalacji w pliku config.ini, a wystarczy umieścić je w katalogu plugins.
Zatem plik config.ini prezentuje się następująco:
eclipse.ignoreApp=truea sama struktura katalogowa tak:
osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start
|____configurationPakunek org.eclipse.equinox.common pobrałem ze strony Equinox Stable Build: 3.5M1, natomiast org.eclipse.update.configurator znalazłem w katalogu Eclipse Ganymede w plugins (nigdzie indziej nie mogłem go namierzyć).
| |____config.ini
|____org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
|____org.eclipse.osgi_3.5.0.v20080804-1730.jar
|____org.eclipse.update.configurator_3.2.200.v20080417.jar
|____plugins
| |____spring-osgi-core-1.2.0-m2-SNAPSHOT.jar
Przy powyższej konfiguracji każdy z pakunków umieszczonych w katalogu plugins będzie zainstalowany automatycznie podczas uruchomienia Equinoksa.
jlaskowski@work /cygdrive/c/apps/equinoxZ pewnością znacząco uprości zabawę z uruchomieniem wszystkich pakunków Spring-DM niezbędnych do uruchomienia aplikacji webowych na Apache Tomcat 6.0.18 w ramach Equinoksa. Do tej pory wymagało to ręcznego uruchamiania około 20 pakunków przy każdorazowym usunięciu katalogu configuration (!)
$ java -jar org.eclipse.osgi_3.5.0.v20080804-1730.jar -console
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.5.0.v20080804-1730
1 ACTIVE org.eclipse.equinox.common_3.4.0.v20080421-2006
2 ACTIVE org.eclipse.update.configurator_3.2.200.v20080417
3 INSTALLED org.springframework.bundle.osgi.core_1.2.0.m2-SNAPSHOT
Innym sposobem uruchamiania aplikacji opartej o OSGi jest OPS4J Pax Runner: http://wiki.ops4j.org/confluence/display/ops4j/Pax+Runner
OdpowiedzUsuń* działa nie tylko z equinox ale także felix i knopflerfish
* pozwala na instalowanie pakunków nie tylko z katalogu ale także ściąganie ich przez http lub z repozytorium mavena
A nazwę tego zupełnie przypadkowego katalogu "plugins" można jakoś zmienić? Idealnie byłoby, gdyby można wskazać kilka katalogów w których equinox poszuiwałby pakunków.
OdpowiedzUsuń