2011-06-22 16 views
11

Tengo una aplicación que usa Spring Batch y Spring MVC. Puedo implementar Spring Batch Admin como una guerra separada y usarlo contra el mismo DB que usa mi aplicación, aunque me gustaría integrarlo en mi propia aplicación, posiblemente también modificar algunas de las vistas.Integración de Spring Batch Admin en una aplicación existente

¿Hay una manera fácil de hacer esto o tengo que bifurcarlo e ir desde allí?

Respuesta

14

Aparentemente hay una manera fácil de acuerdo con este thread;

  • Definir un DispatcherServlet por lotes de administración en web.xml:

    <servlet> 
        <servlet-name>Batch Servlet</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param> 
         <param-name>contextConfigLocation</param-name> 
         <param-value>classpath*:/org/springframework/batch/admin/web/resources/servlet-config.xml</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    
    <servlet-mapping> 
        <servlet-name>Batch Servlet</servlet-name> 
        <url-pattern>/batch/*</url-pattern> 
    </servlet-mapping> 
    
  • Añadir un reemplazo para resourceService en el appContext raíz:

    <bean id="resourceService" 
    class="org.springframework.batch.admin.web.resources.DefaultResourceService"> 
        <property name="servletPath" value="/batch" /> 
    </bean> 
    
  • Modificar standard.ftl en primavera-batch-admin -resources-1.2.0-RELEASE.jar para reflejar la dirección URL:

    <#assign url><@spring.url relativeUrl="${servletPath}/resources/styles/main.css"/></#assign>

+0

+1 Su la respuesta se vinculó aquí: http://forum.springsource.org/showthread.php?116685-Spring-Batch-Admin-App-fails-to-create-configuration-bean – opyate

+0

¿Puede publicar detalles de su pom.xml donde declarar las dependencias en los archivos jar de Spring-batch-admin? – emeraldjava

7

Si está utilizando Spring-batch-admin 1.2.1, usted no tiene que modificar standard.ftl archivo. Y debe agregar los archivos servlet-config.xml y webapp-config.xml desde org/springframework/batch/admin/web/resources. Estos son los pasos (se repite de nuevo):

<servlet> 
     <servlet-name>Batch Servlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath*:/org/springframework/batch/admin/web/resources/servlet-config.xml,classpath*:/org/springframework/batch/admin/web/resources/webapp-config.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

Añadir resourceService frijol en su applicationContext:

<bean id="resourceService" 
class="org.springframework.batch.admin.web.resources.DefaultResourceService"> 
    <property name="servletPath" value="/batch" /> 
</bean> 
+0

Según la respuesta a esta pregunta, la definición de 'resourceService' debe ir en 'META-INF \ spring \ batch \ override'. http://stackoverflow.com/questions/23880396/batch-admin-console-dispatcherservlet-using-internalresourceviewresolver-inste – Stewart

3

En lugar de hacer referencia a los archivos XML de primavera lotes de administración así:

<param-value>classpath*:/org/springframework/batch/admin/web/resources/servlet-config.xml</param-value> 
que

también puede hacer referencia a su propio archivo XML

<param-value>classpath:eregister-spring-admin-servlet.xml</param-value>

contiene somethink así:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

<import resource="classpath*:/META-INF/spring/batch/servlet/resources/*.xml" /> 
<import resource="classpath*:/META-INF/spring/batch/servlet/manager/*.xml" /> 
<import resource="classpath*:/META-INF/spring/batch/servlet/override/*.xml" /> 
<import resource="classpath*:/META-INF/spring/batch/bootstrap/**/*.xml" /> 
<import resource="classpath*:/META-INF/spring/batch/override/**/*.xml" /> 

<!-- Override de standard locatie van spring batch admin resources --> 
<bean id="resourceService" class="org.springframework.batch.admin.web.resources.DefaultResourceService"> 
    <property name="servletPath" value="/batch" /> 
</bean> 

<bean id="parameterUnpackerFilter" class="org.springframework.batch.admin.web.filter.ParameterUnpackerFilter"> 
    <property name="prefix" value="unpack_"/> 
    <property name="putEmptyParamsInPath" value="true"/> 
</bean> 

</beans> 
4

he incorporado primavera de administración de lotes en mi aplicación que se empaqueta como un archivo jar. Hice esto porque esta aplicación ya existía y la ejecuté usando J2SE y no en un contenedor de servlets como Tomcat. Además, no me gustó la idea de tener que implementar un contenedor de servidor web/servlet para trabajos por lotes. La aplicación Spring Batch Admin es una buena implementación de referencia y casi todas las interfaces pueden reemplazarse utilizando clases personalizadas a través de Spring DI. Además, toda la interfaz de usuario fue impulsada por la plantilla. Por lo tanto, extraje los recursos pertinentes y ejecuté la consola utilizando un servidor Jetty incrustado que mi aplicación ejecuta. Esto, en efecto, ha volteado la contención de la aplicación dentro del contenedor de servlets al contenedor de servlets dentro de la aplicación.

Las capturas de pantalla son aquí: https://github.com/regunathb/Trooper/wiki/Trooper-Batch-Web-Console

Fuente, recursos de configuración etc son aquí: https://github.com/regunathb/Trooper/tree/master/batch-core (marque la carpeta/recursos/WEB-INF/src/principal de configuraciones y recursos relacionados con la web)

Cuestiones relacionadas