App web Java, con framework di plugin e possibilità di connettersi al sorgente per gli aggiornamenti

3

Ho cercato in giro per alcune buone fonti, ma o stavo cercando le parole chiave sbagliate, o mi manca qualcosa. Sto cercando di riqualificare un'app Web che uso da un po 'di tempo. Molte parti non sono aggiornate e stiamo costantemente introducendo piccoli hack per tentare di dargli nuova vita.

Quindi quello che mi piacerebbe fare è riprogettarlo da zero, costruito su una sorta di framework plug-in. Prima di continuare, sono più o meno un programmatore Java intermedio. In un certo senso, spero di utilizzare questo progetto come una grande esperienza di apprendimento.

Ho letto molto su OSGi, e sembra che sia il framework più completo. Idealmente, mi piacerebbe un'app web per i risultati finali che possa eseguire un'istanza come ambiente di hosting e altre istanze possano connettersi ad essa per ottenere plug-in nuovi e aggiornati. Alla fine, voglio bloccare questi plug-in in base a criteri indecisi su chi può ottenerli (in pratica alcuni saranno semplicemente degli aggiornamenti, altri offriranno nuove funzionalità e dovrebbero essere "acquistati" attraverso un sistema esterno). Ma questo sarà probabilmente gestito in una fase successiva. Ci dovrebbe essere una vista di amministrazione per la gestione dei bundle in un ambiente caldo (cercando di evitare di dover riavviare il server per un aggiornamento).

So che tutte queste cose sono possibili, sto solo cercando di trovare delle buone risorse per riferimento. Tutti i tutorial di OSGi che sto trovando sembrano essere troppo semplicistici. Se qualcuno qui può guidarmi nella giusta direzione su uno o tutti gli oggetti che sto cercando, sarebbe molto apprezzato. Inoltre, questo è il mio primo post, quindi prenderò commenti / critiche sul contenuto del mio post. Grazie!

    
posta lessthancommon 27.03.2012 - 01:18
fonte

3 risposte

2

In OSGi ci sono una varietà di soluzioni disponibili per il provisioning di moduli / plug-in OSGi.

Uno degli approcci è l'OSGi Bundle Repository (OBR). Questo è un sistema che può contenere moduli OSGi e servire come sistema di provisioning per le vostre applicazioni. È possibile accedere alla shell o all'API del servizio OBR per risolvere le risorse. Sembra una buona base per un quadro collegabile. Dovresti disporre di un OBR centrale contenente i plug-in e un modulo di aggiornamento che utilizza l'API per connettersi e risolvere.

L'OBR è utilizzato ad es. Bndtools per le risorse di provisioning dei progetti OSGi di Eclipse. Applicazioni come Artifactory e Nexus forniscono anche supporto per OBR. Altro su OBR , OBR spiegato in OSGi In Action book .

Come menzionato all'inizio ci sono altri sistemi di provisioning. La maggior parte dei runtime (Eclipse Virgo, Apache Karaf) offre una sorta di sistema di repository (non sempre OBR) per il provisioning dei bundle. Hanno già applicazioni Web disponibili per visualizzare e interagire con loro. Maggiori informazioni su questo argomento nella risposta fornita su questa domanda SO . Da OSGi R5 esistono servizi di standardizzazione per interagire con molti di essi. Vedi queste diapositive su eclipsecon.org su Servizio Sottosistema, Servizio Repository e Servizio Resolver.

Infine vorrei menzionare il progetto Apache Sling . È un framework per creare applicazioni Web OSGi, ma la cosa interessante è che utilizza le specifiche del repository di contenuti Java per gestire il contenuto. È possibile distribuire Sling su qualsiasi contenitore servlet e dispone di un'applicazione Web di amministrazione in cui è possibile gestire i bundle OSGi. È rapido alzarsi e correre e provarlo. Devi solo distribuire la guerra del launchpad Sling. Per ulteriori informazioni su Sling Launchpad su sling.apache.org . Non ho molta esperienza nello sviluppo con Sling, l'ho appena usato per distribuire applicazioni Web OSGi.

Fondamentalmente, quando usi OSGi un sistema di plugin è a portata di mano senza implementare tutto tu stesso. Sebbene sia difficile trovare esempi del mondo reale, consiglio di utilizzare un sistema di provisioning esistente da un runtime OSGi o Sling per iniziare rapidamente. Una buona risorsa sono i libri di Manning su OSGi (OSGi In Action, In Depth & Enterprise) che mi hanno aiutato molto a cogliere i concetti e gli esempi sono davvero buoni.

    
risposta data 08.06.2012 - 10:17
fonte
2

Ogni sviluppatore vuole creare un'applicazione killer con molte funzionalità. Ma ho imparato da una metodologia lean start-up che puoi prendere facilmente. Per prima cosa crea un'applicazione con funzionalità minime, avvia la prima versione dell'applicazione e attendi il feedback.

Se la tua applicazione ha successo e il codice aumenta, è chiaro che puoi avere bisogno di un framework di plugin per consentire ad altri programmatori di estendere la tua applicazione o una migliore organizzazione del codice. In questo passaggio scegli una libreria che risolve le tue esigenze immediate che non ha una grande curva di apprendimento.

Quello che voglio dire è che è bello pensare in grande, ma farlo passo dopo passo.

Nelle mie applicazioni ho usato una piccola libreria java PF4J creata da me. No xml, solo codice java.

Dal mio punto di vista OSGi è OK, è uno standard, è potente ma è troppo complesso per le piccole e medie applicazioni e per questo motivo non lo consiglio per quello che vuoi ottenere.

    
risposta data 12.10.2012 - 16:16
fonte
0

Qui ho una connessione limitata, quindi sarà breve.

Ti suggerisco caldamente di dare un'occhiata a OSGi & Progetto Jigsaw andando avanti. Inoltre potresti trovare successo con JSR-330 (aka Dependency Injection per Java). Sonatype e altri lo stanno utilizzando come base per un framework di plugin su Hudson, tra le altre cose. HTH un po 'e si spera che una risposta più completa faccia esplodere il mio: -)

    
risposta data 27.03.2012 - 01:56
fonte

Leggi altre domande sui tag