2010-08-06 11 views
5

Estoy escribiendo una aplicación web en Eclipse.Dónde colocar el archivo de configuración de ServiceLoader en una aplicación web

Intento utilizar la clase ServiceLoader para cargar algunos complementos.

Los documentos para ServiceLoader dicen que necesito colocar un archivo en META-INF/services.

He colocado el archivo en la carpeta WebContent/META-INF/service pero cuando ejecuto la prueba JUnit a través de Eclipse no encuentra ningún complemento.

¿Es esta la ubicación correcta para el archivo?

Además, ¿cómo puedo obtener más información de depuración de ServiceLoader como las carpetas en las que está buscando el archivo?

Respuesta

7

Los servicios META-INF/deben estar en la raíz del archivo jar o del directorio de recursos en el classpath del cargador de clases utilizado para localizar los complementos.

Si usted tiene una aplicación web, entonces usted puede tener estructura de directorios como:

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

Pero la forma ideal es tenerlo en el archivo jar de su plugin. Por ejemplo, si tiene un plug-in integrado como WEB-INF/lib/myplugin.jar, y su clase de complemento es com.example.plugin.MyPlugin A continuación, el frasco debe tener una estructura:

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

Una vez hecho esto, se puede obtener un cargador de servicio utilizando el cargador de clases de la aplicación Web

+0

OK, lo tengo funcionando ahora! ¡Nunca hubiera adivinado que vaya en la carpeta WEB-INF! Usaré la idea de crear un archivo JAR para ello más adelante cuando inicie un script Ant. – ljbade

+0

@Leith genial, pero haga que el cambio (sobre archivos jar) tarde o temprano :) – naikus

Cuestiones relacionadas