osgi Tutorial
Iniziare con osgi
Ricerca…
Osservazioni
OSGi è una specifica di sistema modulo dinamica per JVM. Ha specifiche con versioni e pubblico differenti. Esistono anche più implementazioni:
Eclipse dalla sua versione 3 è basato su OSGi. NetBeans è anche in grado di gestire i moduli OSGi dal 6.9 . Il portale Liferay ha anche iniziato a utilizzare OSGi come base per la modularizzazione sin dalla sua versione 7.
Versioni
| Versione | Data di rilascio |
|---|---|
| SGR1 | 2000/05/01 |
| SPR2 | 2001-10-01 |
| SR3 | 2003/03/01 |
| SR4 | 2005-11-01 |
| SR4.1 | 2007-05-01 |
| SR4.2 Core | 2009-09-01 |
| SR4.2 Compedium | 2009-09-01 |
| SR4.2 Enterprise | 2010-03-01 |
| SR4.3 Core | 2011-04-01 |
| SR4.3 Compendio | 2012-05-01 |
| SR4.3 Residental | 2012-05-01 |
| SR5 Core | 2012-06-01 |
| SR5 Enterprise | 2012-06-01 |
| SR6 Core | 2014/06/01 |
| Compendio SR6 | 2014/06/01 |
| SR6 Enterprise | 2015/08/01 |
| SR6 Residental | 2015/08/01 |
Nota: https://www.osgi.org/developer/specifications/ non menziona le date esatte, quindi usate il primo giorno del mese nella tabella.
Download e utilizzo di Equinox
Scarica ed estrai lo Starter Kit OSGi per la tua piattaforma dalla pagina di download di Equinox per il rilascio di Neon .
Avvia il framework dalla rt/plugins folder con il seguente comando (o l'eseguibile rt della tua piattaforma dalla cartella rt ):
rt/plugins$ java -jar org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar -console
osgi>
Nel prompt della console OSGi, è possibile gestire i bundle, ad esempio:
osgi>ss
"Framework is launched."
id State Bundle
0 ACTIVE org.eclipse.osgi_3.11.0.v20160603-1336
Fragments=1
1 RESOLVED org.eclipse.osgi.compatibility.state_1.0.200.v20160504-1419
Master=0
2 RESOLVED org.apache.commons.codec_1.6.0.v201305230611
3 RESOLVED org.apache.commons.logging_1.1.1.v201101211721
4 ACTIVE org.apache.felix.gogo.command_0.10.0.v201209301215
5 ACTIVE org.apache.felix.gogo.runtime_0.10.0.v201209301036
6 ACTIVE org.apache.felix.gogo.shell_0.10.0.v201212101605
7 RESOLVED org.apache.httpcomponents.httpclient_4.3.6.v201511171540
8 RESOLVED org.apache.httpcomponents.httpcore_4.3.3.v201411290715
9 STARTING org.eclipse.core.jobs_3.8.0.v20160509-0411
10 STARTING org.eclipse.ecf_3.8.0.v20160405-1820
Fragments=17
11 STARTING org.eclipse.ecf.filetransfer_5.0.0.v20160405-1820
12 STARTING org.eclipse.ecf.identity_3.7.0.v20160405-1820
13 STARTING org.eclipse.ecf.provider.filetransfer_3.2.200.v20160405-1820
Fragments=16
14 STARTING org.eclipse.ecf.provider.filetransfer.httpclient4_1.1.100.v20160405-1820
Fragments=15
15 RESOLVED org.eclipse.ecf.provider.filetransfer.httpclient4.ssl_1.1.0.v20160405-1820
Master=14
16 RESOLVED org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20160405-1820
Master=13
17 RESOLVED org.eclipse.ecf.ssl_1.2.0.v20160405-1820
Master=10
18 STARTING org.eclipse.equinox.app_1.3.400.v20150715-1528
19 ACTIVE org.eclipse.equinox.common_3.8.0.v20160509-1230
20 STARTING org.eclipse.equinox.concurrent_1.1.0.v20130327-1442
21 ACTIVE org.eclipse.equinox.console_1.1.200.v20150929-1405
22 RESOLVED org.eclipse.equinox.ds_1.4.400.v20160226-2036
23 STARTING org.eclipse.equinox.frameworkadmin_2.0.300.v20160504-1450
24 ACTIVE org.eclipse.equinox.frameworkadmin.equinox_1.0.700.v20160102-2223
25 RESOLVED org.eclipse.equinox.launcher_1.3.200.v20160318-1642
Fragments=26
26 RESOLVED org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.400.v20160518-1444
Master=25
27 STARTING org.eclipse.equinox.p2.artifact.repository_1.1.500.v20160419-0834
28 ACTIVE org.eclipse.equinox.p2.console_1.0.500.v20160504-1450
29 ACTIVE org.eclipse.equinox.p2.core_2.4.100.v20160419-0834
30 STARTING org.eclipse.equinox.p2.director_2.3.300.v20160504-1450
31 STARTING org.eclipse.equinox.p2.engine_2.4.100.v20160419-0834
32 STARTING org.eclipse.equinox.p2.garbagecollector_1.0.300.v20160504-1450
33 RESOLVED org.eclipse.equinox.p2.jarprocessor_1.0.500.v20160504-1450
34 ACTIVE org.eclipse.equinox.p2.metadata_2.3.100.v20160427-2220
35 STARTING org.eclipse.equinox.p2.metadata.repository_1.2.300.v20160419-0834
36 STARTING org.eclipse.equinox.p2.operations_2.4.200.v20160504-1450
37 ACTIVE org.eclipse.equinox.p2.repository_2.3.200.v20160421-0324
38 STARTING org.eclipse.equinox.p2.touchpoint.eclipse_2.1.400.v20160419-0834
39 STARTING org.eclipse.equinox.p2.touchpoint.natives_1.2.100.v20160419-0834
40 STARTING org.eclipse.equinox.p2.transport.ecf_1.1.200.v20160606-1311
41 STARTING org.eclipse.equinox.preferences_3.6.0.v20160120-1756
42 ACTIVE org.eclipse.equinox.registry_3.6.100.v20160223-2218
43 STARTING org.eclipse.equinox.security_1.2.200.v20150715-1528
Fragments=44
44 RESOLVED org.eclipse.equinox.security.win32.x86_64_1.0.100.v20130327-1442
Master=43
45 STARTING org.eclipse.equinox.simpleconfigurator_1.1.200.v20160504-1450
46 ACTIVE org.eclipse.equinox.simpleconfigurator.manipulator_2.0.200.v20160504-1450
47 STARTING org.eclipse.equinox.util_1.0.500.v20130404-1337
48 RESOLVED org.eclipse.osgi.services_3.5.100.v20160504-1419
49 RESOLVED org.sat4j.core_2.3.5.v201308161310
50 RESOLVED org.sat4j.pb_2.3.5.v201404071733
51 RESOLVED org.tukaani.xz_1.3.0.v201308270617
Utilizzando Apache Felix
Scarica Apache Felix Framework Distribution ed estrailo in una directory:
$ tar xf org.apache.felix.main.distribution-5.4.0.tar.gz $ cd felix-framework-5.4.0
E quindi avviare il framework con il seguente comando:
$ java -jar bin/felix.jar
____________________________
Welcome to Apache Felix Gogo
g!
Per impostazione predefinita, Felix utilizza Apache Felix Gogo come shell interattiva. Il prompt dei comandi predefinito, g! , è mostrato sopra.
La shell Gogo fornisce alcuni semplici comandi incorporati per interagire sia con l'ambiente di runtime di Gogo, sia con il framework OSGi stesso. Digitare il comando help sul g! chiedere di vedere una lista di comandi integrati.
Un esempio è il comando lb (short for list bundles ) che emette un elenco dei bundle OSGi attualmente installati nel framework:
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (5.4.0)|5.4.0
1|Active | 1|Apache Felix Bundle Repository (2.0.6)|2.0.6
2|Active | 1|Apache Felix Gogo Command (0.16.0)|0.16.0
3|Active | 1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
4|Active | 1|Apache Felix Gogo Shell (0.10.0)|0.10.0