La chiave per rendere il meccanismo di aggiornamento di karaf funziona è distribuire da Maven anziché utilizzare la cartella di distribuzione. Installa si bundle in questo modo:
install -s mvn:groupid/artifactID/version
o
install -s mvn:groupid/artifactID/version/typeOfMavenArtifact
secondo è utile per l'installazione, ad esempio la guerra/artefatti WAB. Le specifiche del protocollo Maven completo possono essere trovate here.
Quindi Karaf sa da dove viene il pacco. Puoi anche verificarlo utilizzando la -u
. Questo fa mostrare a Karaf la posizione dell'aggiornamento che ora dovrebbe essere un esperto uri. Non tutti i pacchetti karaf hanno una posizione di aggiornamento come questa.
Quando ora crei una nuova build del tuo progetto usando maven finirà nel tuo repository di maven locale. Poi basta eseguire
update <bundleid>
Questo rende karaf controllare la posizione di aggiornamento (nel tuo caso locale Maven pronti contro termine) e ricaricare il pacco da lì.
si può anche automatizzare ulteriormente questo utilizzando
dev:watch
o per karaf 3+
bundle:watch
Questo vi farà karaf controllare di Maven pronti contro termine per le modifiche in fasci SNAPSHOT si è schierato e automaticamente ridistribuire queste.
Anche questo funziona molto bene insieme al debug remoto. Utilizzare
export KARAF_DEBUG=true
prima di iniziare karaf. Quindi ascolterà un debugger sulla porta 5005.
È quindi possibile avviare una sessione di eclissi di debug remoto sulla stessa porta e eseguire correttamente il debug dell'applicazione in karaf. Funziona molto bene anche se cambi il tuo bundle usando uno degli approcci precedenti. Quindi puoi eseguire il debug, trovare il tuo problema, cambiare il codice, creare e continuare il debugging con la versione modificata.
Lo uso spesso anche quando lavoro alla base del codice karaf in quanto funziona anche per la maggior parte dei bundle di karaf.
fonte
2014-07-17 06:08:35
Perché non eseguire un framework OSGi direttamente dal tuo IDE? –
Suggerite l'avvio di framework Karaf/OSGI con ogni esecuzione di un'applicazione? Oppure raggruppare la distribuzione su Karaf usando IDE? –
Sto suggerendo di eseguire il bundle in un framework OSGi ogni volta che è necessario eseguirlo. Karaf è un server di applicazioni, non vorrei implementarlo per lo sviluppo. –