Per favore, non usare System.exit (0) per chiudere un framework OSGi. Dovresti farlo fermando il bundle con l'ID 0, il pacchetto System. In questo modo, dai a tutti i bundle la possibilità di chiudere in modo ordinato (ad es. Risorse gratuite, ecc.).
La specifica OSGi definisce quanto segue (Specifiche principali, R4.x, 4.2.6 Arresto di un framework).
L'arresto può essere avviato arrestando il pacchetto di sistema, [...] o chiamando il metodo di arresto sull'oggetto framework.
In questo capitolo viene fornita una descrizione dettagliata di ciò che accade quando un framework viene spento.
Il bundle di sistema risp. l'oggetto struttura viene anche definita (capitolo 4.6 Il sistema dei bundle):
Il fascio sistema assomiglia all'oggetto quadro quando un quadro viene lanciato, ma le implementazioni non è richiesto di utilizzare lo stesso oggetto per l'oggetto quadro e il sistema fascio. Tuttavia, entrambi gli oggetti devono avere l'ID bundle 0, la stessa posizione e il nome simbolico del bundle.
Le specifiche OSGi sono disponibili gratuitamente sul sito Web di OSGi Alliance (http://www.osgi.org/Specifications/HomePage).
Il metodo standard finora è quello che ho descritto nella mia risposta. Questo è il comportamento specificato nelle specifiche OSGi, anche nella prossima versione 4.2. La prossima versione (4.2.) includerà il servizio di livello iniziale * opzionale * che può essere utilizzato per controllare il livello iniziale dei pacchetti (e il framework). – akr