Perché Eclipse deve essere riavviato dopo aver installato un plugin? [chiuso]

4

Come Eclipse utilizza OSGi per gestire moduli e bundle, e quindi dovrebbe essere in grado di hot-deployli, perché suggerisce di riavviare dopo aver installato un plugin "per le modifiche abbiano effetto"?

Eclipse ha qualche limite di OSGi, o la sua architettura è tale che, anche con hot-deploy, non può garantire che le implementazioni siano andate a buon fine e quindi intraprende il percorso più sicuro offrendo un riavvio?

    
posta Sébastien Le Callonnec 10.10.2012 - 16:38
fonte

3 risposte

4

La sfortunata realtà è che una volta che hai moduli sufficientemente interconnessi, è quasi impossibile dimostrare che tutti i riferimenti ai moduli che desideri scaricare saranno rimossi in qualsiasi circostanza. Molte librerie e persino le classi JDK principali conserveranno riferimenti a oggetti o classi per lunghi periodi di tempo, o anche per sempre, e persino un singolo riferimento vagante impedirà che ClassLoader che ha caricato un modulo sia spazzato via.

Tali problemi sono molto noiosi da risolvere, difficili da rilevare automaticamente e sono molto facili da reintrodurre.

Questo problema alza la sua brutta testa anche con la ridistribuzione di WAR s in contenitori servlet come Jetty o Tomcat.

Molti sviluppatori scelgono un percorso più pragmatico e dedicano del tempo a sviluppare nuove funzionalità e correggere bug, piuttosto che garantire che il caricamento e lo scaricamento a caldo del codice funzionino al 100% correttamente. Quindi Eclipse consiglia di riavviarti ogni volta che riconfiguri i suoi plugin, poiché non può garantire che tutti i plug-in scaricati vengano caricati o scaricati a caldo correttamente.

    
risposta data 11.10.2012 - 09:42
fonte
3

La piattaforma Eclipse supporta l'installazione dinamica di plug-in senza riavvio. In passato questa opzione è stata resa disponibile tramite un'opzione "Apply Now". Sfortunatamente, affinché funzioni correttamente, il plugin stesso deve supportare il comportamento dinamico. La grande maggioranza dei plug-in di Eclipse non sono dinamici: non si ripuliscono da soli e non reagiscono dinamicamente ai servizi o alle estensioni che vengono aggiunte / rimosse dopo l'avvio. Pertanto, il pulsante "Applica ora" a volte veniva scherzosamente definito come il pulsante "Mi sento fortunato". Forse funzionerà, ma forse alcuni dei plugin attualmente installati non gestiranno le modifiche dinamiche al sistema.

Alla fine l'installazione dei plugin è abbastanza rara che un riavvio è l'approccio più pulito e più sicuro. Questo non è tanto un limite architettonico ... rendere il codice completamente dinamico è un duro lavoro in qualsiasi framework applicativo, e molti scrittori di strumenti non pensano che valga la pena investire.

    
risposta data 27.11.2012 - 17:40
fonte
0

Probabilmente perché non possono forzare i bundle a rilasciare riferimenti ai servizi, quindi potrebbe essere possibile per un bundle avere un riferimento a un servizio che è stato aggiornato o rimosso. Ecco perché avvertono che il mancato riavvio può portare a comportamenti indesiderati.

    
risposta data 10.10.2012 - 18:51
fonte

Leggi altre domande sui tag