2015-06-17 56 views

risposta

2

No, non supporta OSGi. Spring Boot ha lo scopo di creare microservizi come applicazioni pacchettizzate con ogni dipendenza e persino i contenitori servlet confezionati in un JAR eseguibile, quindi è altamente modulare e aggiornabile, senza la necessità di fornire e configurare un contenitore OSGi.

+1

Cosa succede se si desidera distribuire un'app di microservizio come app standalone.Ad esempio, per karat sarebbe bello disporre di un microservice di avvio primaverile come pacchetto OSGi ... – Patrice

4

Una possibilità è incorporare OSGi nella tua applicazione di avvio a molla, per rendere accessibili alcune parti della tua applicazione attraverso il framework. Vedere https://stackoverflow.com/a/4673904/173101 per vedere come è possibile avviare OSGi a livello di programmazione.

Ma in generale non c'è niente come "OSGi-Support". OSGi può essere integrato in ogni applicazione Java e, viceversa, è possibile impacchettare ogni codice Java (anche l'applicazione Spring-Boot) in un bundle OSGi per avviarlo all'interno di un contenitore OSGi (anche se probabilmente non renderebbe molto senso a tutti).

+0

Ho una domanda per la tua risposta. Hai scritto che ogni codice Java (anche l'app Spring-Boot) può essere impacchettato in OSGi-bundle per avviarlo all'interno di un contenitore OSGi. La domanda è, come confezionare un'applicazione Spring-Boot in OSGi-bundle? – xmlParser

1

Ci sono in realtà molte buone ragioni per l'implementazione di Spring Boot in OSGi, il principale delle prestazioni, in particolare le prestazioni di avvio se il servizio Spring Boot è un servizio funzionale (vale a dire inizia, restituisce risultati, termina). Un'applicazione che sto attualmente testando beta in Spring Boot si avvia in ~ 0.5 secondi distribuiti su Equinox contro 3.5 secondi da solo. Altri motivi potrebbero essere l'integrazione con un'applicazione o un server Java EE basati su OSGi.

Detto questo, è anche possibile eseguire OSGi da Spring Boot, per motivi di prestazioni probabilmente preferirei Concierge come implementazione OSGi su Felix o Equinox, semplicemente a causa delle sue ridotte dimensioni (a meno che l'app non abbia bisogno di tutte le funzionalità del più grande

Un'altra alternativa sarebbe quella di avvolgere le librerie Spring utilizzate dall'applicazione Spring Boot in MSF4J (da WSO2). Ciò non richiede molto lavoro e può darvi un avvio 10x più veloce con 1/10 dell'utilizzo della memoria