Domanda

Ho un'applicazione OSGi grande e in crescita con un numero di bundle. Sono curioso di sapere il modo migliore per gestire questo tipo di applicazione. Attualmente sto usando Eclipse e Maven, ma sebbene ciò sia ottimo per la creazione di bundle (tramite maven-bundle-plugin), al momento non è stato facile gestire l'intera applicazione.

Quello che vorrei fare è avere UNA configurazione di esecuzione o UNO pom.xml che può essere avviato e l'intera applicazione / progetto può essere costruita e avviata. Inoltre, vorrei avere qualcosa che sarebbe buono per il debug.

Ho sentito parlare di PAX Construct e l'ho installato in Eclipse, ma finora è stato di scarso aiuto (forse non lo sto usando correttamente).

Sono sicuro che ci sono persone là fuori con grandi applicazioni OSGi che vengono gestite correttamente. Qualsiasi consiglio che potrebbe essere condiviso sarebbe di grande aiuto.

Grazie, Stephen

È stato utile?

Soluzione

Una configurazione della corsa è possibile tramite Pax Runner . Ti consente di scegliere l'implementazione della piattaforma OSGi, specificare i profili (set di pacchetti preconfezionati per alcuni ruoli, ad esempio web , log , ds , ecc. .) e ha un buon supporto di provisioning, ad esempio può caricare bundle dal repository Maven. Di conseguenza, puoi avere una configurazione di esecuzione come

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

Se la tua applicazione è molto grande o hai applicazioni diverse, c'è anche un modo per creare i propri profili.

Altri suggerimenti

Beh ...

Tutto dipende da cosa intendi per "gestione" l'applicazione.

Per l'avvio, la creazione e il debug del tempo di sviluppo - Eclipse IDE dovrebbe adattarsi perfettamente al conto.

Maven ... Non posso parlarne, visto che non l'ho mai usato da solo.

Abbiamo un'applicazione eclipse piuttosto grande (molte, in realtà) e dal lato degli sviluppatori non stiamo usando nulla di speciale oltre a Eclipse ed è SCM integrato.

Nel server di compilazione cc, usiamo anche eclissi senza testa per eseguire la costruzione e il packaging.

Ora l'installazione dell'area di lavoro è andata un po 'fuori controllo negli ultimi tempi con tutte le dipendenze e i passaggi di costruzione intermedi, quindi stiamo studiando Buckminster per la gestione della materializzazione della piattaforma target e delle risorse dell'area di lavoro.

Se funziona, probabilmente passeremo anche all'edilizia con Bucky - sembra sicuramente promettente.

(Non ho alcuna esperienza con PAX, ma a prima vista, sembra anche promettente ...)

Sono abbastanza nuovo in OSGi ma,

non sarebbe possibile usare il servizio OBR in modo tale avresti un file repository OBR che necessita dei bundle e lasciare che il servizio OBR capisca le dipendenze e popolare il tuo OSGIhost per te?

Quest'area credo abbia un supporto molto scarso al momento. OSGI in realtà non definisce nulla sulla distribuzione o il packaging, quindi spetta ad altri framework (ad esempio Eclipse) trovare il proprio modo di farlo.

Se stai creando un'applicazione RCP (Eclipse base), i sistemi eclipse fanno tutto questo, fino alla creazione di exe ecc. Tuttavia, le build vengono eseguite principalmente nell'area di lavoro di Eclipse, le build senza testa sono più complicate. Il progetto Tycho sta cercando di renderlo più sensato unendo i cicli di costruzione Maven ed Eclipse, tuttavia è ancora focalizzato sulle applicazioni RCP piuttosto che su OSGI generico.

Se non stai facendo RCP, che è anche la mia situazione, allora probabilmente dovrai lanciare la tua soluzione, poiché non ho trovato alcuna soluzione generale. Ecco uno schema di ciò che facciamo:

Definiamo un progetto POM che elenca tutti i bundle contenuti nella tua applicazione. Tutto ciò che questo progetto fa è elencare i riferimenti - chiamiamolo il progetto 'bundle-list'.

Quindi, utilizziamo la disposizione pax per eseguire il progetto in modalità di sviluppo. Ciò si ottiene rendendo la 'lista bundle' il padre del pom di provisioning del progetto pax (di solito nella cartella 'provision'). Quindi, quando avvii pax, usa l'elenco dei bundle di quel progetto per avviare OSGI. I riferimenti bundle nel progetto "bundle-list" devono essere contrassegnati come ambito "fornito" affinché funzioni.

Quindi, per creare una distribuzione, abbiamo un altro progetto. Questo progetto ha anche il progetto 'bundle-list' come suo genitore. Questo progetto utilizza vari plugin per creare una distribuzione, incluso il download dei vasetti bundle. La distribuzione include script che avviano OSGI, ma sono scritti a mano, qui non ci sono sistemi pax.

Questo funziona bene per noi per mantenere l'elenco dei bundle in un unico posto, ma ci sono ancora molti script scritti a mano e ci sono problemi nella condivisione della configurazione tra i due sistemi, ad es. file di configurazione, livelli iniziali del bundle ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top