Pregunta

Tengo un servicio web basado en la primavera. Ahora quiero construir una especie de complemento por ello que se extiende con frijoles. Lo que tengo ahora en web.xml es:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/classes/*-configuration.xml</param-value>
</context-param>

Mi aplicación núcleo tiene main-configuration.xml que declara sus granos. Mi aplicación plugin tiene plugin-configuration.xml que declara granos adicionales. Ahora, cuando despliego, mi construcción despliega plugin.jar en /WEB-INF/lib/ y copias plugin-configuration.xml en /WEB-INF/classes/ todo bajo main.war.

Esto es todo muy bien (aunque creo que podría ser una solución mejor), pero cuando desarrollo el plugin, no quiero tener dos proyectos en Eclipse con dependencias. Deseo tener main.jar que incluyo como una biblioteca. Sin embargo, web.xml de main.jar no se descubre de forma automática. ¿Cómo puedo hacer esto? inyección de frijol? descubrimiento de frijol de algún tipo? Algo más?

Nota: espero tener múltiples plugins diferentes en la producción, pero el desarrollo de cada uno de ellos será contra main.jar pura

Gracias.

¿Fue útil?

Solución

Creo que hay un enfoque más simple:

En su programa de control (la aplicación de web) definir algo como el siguiente parámetro contextConfigLocation:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:/META-INF/foo/*-configuration.xml</param-value>
</context-param>

Las partes cruciales son classpath*:as que se traduce en el análisis de toda la ruta de clase para los archivos de configuración que coinciden con el patrón siguiente. Si sólo utiliza classpath: la búsqueda se detendrá en el primer archivo encontrado. También JAR no atraviesa si no se actuó correctamente.

La segunda parte crucial está teniendo al menos un BasePath no comodín para las operaciones de búsqueda de trabajo. Esto es debido a los rasgos Classloader que sólo devuelve de forma fiable todos los recursos si contienen una ruta de la base (consulte el Javadoc en PathMatchingResourcePatternResolver para más detalles).

Lo que ahora tiene que ver con sus proyectos plugin es su lugar en plugin-configuration.xml /META-INF/foo/, paquete que como JAR y el lugar en la ruta de clase (en caso de que construir con Maven sólo tiene que añadir la dependencia).

En la aplicación se inicia ahora también la recogida Todos los archivos de configuración de la primavera de los plugins y construir el ÀpplicationContext` de ellos.

También puede ser que desee pago y envío otro post que hice en la modularidad de aplicaciones con Spring: ¿Cómo se hace una configuración de la primavera de varios módulos?

Otros consejos

En lugar de /WEB-INF/classes/*-configuration.xml, classpath:*-configuration.xml intento También puede los archivos de configuración de la lista, cada uno en una nueva línea.

Usted tendrá que asegurarse de que los extremos main.jar arriba en WEB-INF / lib, si usted no está utilizando Maven se puede hacer esto en Eclipse de que el marcado webapp que depende del proyecto que crea el main.jar , a través de las propiedades del proyecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top