2010-08-06 14 views
5

Sto scrivendo un'app Web in Eclipse.Dove inserire il file di configurazione ServiceLoader in un'app Web

Sto tentando di utilizzare la classe ServiceLoader per caricare alcuni plug-in.

I documenti per ServiceLoader dicono che è necessario inserire un file in META-INF/services.

Ho inserito il file nella cartella WebContent/META-INF/service ma quando eseguo il test JUnit tramite Eclipse non trova alcun plug-in.

È la posizione corretta per il file?

Inoltre, come posso ottenere maggiori informazioni di debug da ServiceLoader come le cartelle in cui sta cercando il file?

risposta

7

I servizi META-INF/servizi devono trovarsi nella radice del file jar o della directory di risorse nel classpath del classloader utilizzato per individuare i plug-in.

Se si dispone di un'applicazione web, allora si può avere struttura di directory come:

<webappname>/WEB-INF/classes/META-INF/services 

Ma il modo ideale è quello di avere nel file jar del plugin. Ad esempio, se si dispone di un plug-in bundle come WEB-INF/lib/myplugin.jar, e la classe di plug-in è com.example.plugin.MyPlugin Poi il vaso dovrebbe avere una struttura:

myplugin.jar!/META-INF/services/com.example.plugin.MyPlugin 

Fatto questo, è possibile ottenere un caricatore di servizio utilizzando class loader dell'applicazione web

+0

OK, ho funzionato ora! Non avrei mai immaginato che andasse nella cartella WEB-INF! Ti userò l'idea di creare un file JAR in seguito quando avrò in esecuzione uno script Ant. – ljbade

+0

@Facile, ma apporta quella modifica (sui file jar) prima possibile :) – naikus

Problemi correlati