Sto cercando di eseguire il framework OSGi (Equinox) in un metodo principale. Ogni volta che avvio il framework, quando stampo BundleContext.getBundles().length
, si dice che il framework ha solo 1 pacchetto installato (che è sicuramente il bundle di sistema). Quando installo il mio primo pacchetto, l'ID del pacchetto continuerà dall'ultima sessione. diciamo che se avessi avuto 4 pacchetti la scorsa sessione (e che mi sono fermato e disinstallato tutti prima di arrestare il bundle di sistema), il primo ID bundle è impostato 5. Ora, voglio sapere come fa il framework a scegliere l'ID del bundle? Perché e in che modo il framework ricorda l'ultima sessione, anche se avevo disinstallato tutti i bundle? È a causa di Bundle Cache? E se lo è, come posso cancellare la cache (per riavviare la numerazione da 1)?In che modo il framework OSGi imposta l'ID bundle?
risposta
Il framework ha l'ultimo ID bundle utilizzato da qualche parte nell'archivio permanente che gestisce. L'aspetto di questo negozio è un dettaglio di implementazione del framework. Quando si avvia il framework, è possibile specificare la proprietà di configurazione del framework org.osgi.framework.storage.clean
. Questo cancellerà tutti i bundle installati ma non sono sicuro se resetterà l'ultimo ID bundle utilizzato.
L'eliminazione della cartella equinox/org.eclipse.osgi
reimposta la numerazione. Prima dell'eliminazione assicurati che i tuoi bundle non contengano dati importanti in questa cartella.
Il comando bundle
con un fascio id valido può mostrare il percorso assoluto della cartella equinox/org.eclipse.osgi
:
osgi> bundle 7
slf4j.api_1.6.1 [7]
Id=7, Status=ACTIVE Data Root=D:\temp\test\equinox\org.eclipse.osgi\bundles\7\data
...
Che tipo di dati memorizzerà il pacchetto in questo percorso che potrebbe essere importante? – Reza
Forse i tuoi bundle memorizzano dati persistenti. Se non persistono nulla di solito non c'è nulla di cui preoccuparsi. Dipende principalmente dai tuoi pacchetti. Un'altra possibilità sono le configurazioni del manager di configurazione, ma non ne so molto. Archiviamo i nostri dati persistenti all'esterno di questa directory. – palacsint
Si ripristina la numerazione. – palacsint
@palacsint - Questa configurazione elimina la cartella 'equinox/org.eclipse.osgi' che hai menzionato nella tua risposta? – Reza
Penso che cancelli. (Ho creato una directory vuota all'interno della cartella 'equinox/org.eclipse.osgi' ed è andata dopo che ho avviato il framework con' clean = true'.) – palacsint