복붙노트

[SPRING] Spring Batch Admin을 기존 애플리케이션에 통합

SPRING

Spring Batch Admin을 기존 애플리케이션에 통합

Spring Batch와 Spring MVC를 사용하는 애플리케이션이있다. 스프링 일괄 관리자를 별도의 전쟁으로 배포 할 수 있었고 내 응용 프로그램에서 사용하는 것과 동일한 DB에 대해 사용할 수있었습니다. 물론 내 자신의 응용 프로그램에 통합하고 일부보기를 수정할 수도 있습니다.

이 작업을 수행하는 쉬운 방법이 있습니까? 아니면 포크로 이동해야합니까?

해결법

  1. ==============================

    1.분명히이 스레드에 따라 쉬운 방법이 있습니다.

    분명히이 스레드에 따라 쉬운 방법이 있습니다.

  2. ==============================

    2.Spring-batch-admin 1.2.1을 사용하고 있다면 standard.ftl 파일을 수정할 필요가 없습니다. 그리고 org / springframework / batch / admin / web / resources의 servlet-config.xml과 webapp-config.xml 파일을 모두 추가해야합니다. 다음은 단계입니다 (다시 반복).

    Spring-batch-admin 1.2.1을 사용하고 있다면 standard.ftl 파일을 수정할 필요가 없습니다. 그리고 org / springframework / batch / admin / web / resources의 servlet-config.xml과 webapp-config.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,classpath*:/org/springframework/batch/admin/web/resources/webapp-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    

    applicationContext에 resourceService bean을 추가하십시오.

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

    3.jar 파일로 패키징 된 내 애플리케이션에 Spring Batch 관리자를 임베드했습니다. 이 응용 프로그램은 이미 존재하고 Tomcat과 같은 서블릿 컨테이너가 아닌 J2SE를 사용하여 실행하기 때문에이 작업을 수행했습니다. 게다가 배치 작업을 위해 웹 서버 / 서블릿 컨테이너를 배포해야한다는 생각이 맘에 들지 않았습니다. Spring Batch Admin 애플리케이션은 훌륭한 레퍼런스 구현이며 Spring DI를 통해 사용자 정의 클래스를 사용하여 거의 모든 인터페이스를 대체 할 수 있습니다. 또한 모든 UI는 템플릿 기반이었습니다. 따라서 관련 리소스를 추출하고 내 응용 프로그램이 시작되는 임베디드 Jetty 서버를 사용하여 콘솔을 실행했습니다. 사실상 이것은 서블릿 컨테이너 안의 애플 리케이션에서 애플 리케이션 내부의 서블릿 컨테이너로 봉쇄를 뒤집어 놓았습니다.

    jar 파일로 패키징 된 내 애플리케이션에 Spring Batch 관리자를 임베드했습니다. 이 응용 프로그램은 이미 존재하고 Tomcat과 같은 서블릿 컨테이너가 아닌 J2SE를 사용하여 실행하기 때문에이 작업을 수행했습니다. 게다가 배치 작업을 위해 웹 서버 / 서블릿 컨테이너를 배포해야한다는 생각이 맘에 들지 않았습니다. Spring Batch Admin 애플리케이션은 훌륭한 레퍼런스 구현이며 Spring DI를 통해 사용자 정의 클래스를 사용하여 거의 모든 인터페이스를 대체 할 수 있습니다. 또한 모든 UI는 템플릿 기반이었습니다. 따라서 관련 리소스를 추출하고 내 응용 프로그램이 시작되는 임베디드 Jetty 서버를 사용하여 콘솔을 실행했습니다. 사실상 이것은 서블릿 컨테이너 안의 애플 리케이션에서 애플 리케이션 내부의 서블릿 컨테이너로 봉쇄를 뒤집어 놓았습니다.

    스크린 샷은 다음과 같습니다. https://github.com/regunathb/Trooper/wiki/Trooper-Batch-Web-Console

    소스, 구성 리소스 등은 https://github.com/regunathb/Trooper/tree/master/batch-core에 있습니다 (웹 관련 구성 및 리소스는 / src / main / resources / WEB-INF 폴더를 확인하십시오)

  4. ==============================

    4.스프링 배치 관리 XML 파일을 다음과 같이 참조하는 대신 :

    스프링 배치 관리 XML 파일을 다음과 같이 참조하는 대신 :

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

    자신의 XML 파일을 참조 할 수도 있습니다.

    classpath : eregister-spring-admin-servlet.xml

    다음과 같은 내용이 포함되어 있습니다.

    <?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>
    
  5. from https://stackoverflow.com/questions/6438570/integrating-spring-batch-admin-into-an-existing-application by cc-by-sa and MIT license