2011-06-22 9 views
11

Mam aplikację, która używa Spring Batch i Spring MVC. Jestem w stanie wdrożyć Spring Batch Admin jako oddzielną wojnę i użyć go przeciwko tej samej bazie danych, której używa moja aplikacja, chociaż chciałbym ją zintegrować z moją własną aplikacją, ewentualnie zmodyfikować również niektóre widoki.Integracja Spring Batch Admin z istniejącą aplikacją

Czy istnieje prosty sposób na zrobienie tego lub czy muszę go rozwidlić i przejść od tego miejsca?

Odpowiedz

14

Jest najwyraźniej łatwy sposób zgodnie z tym thread;

  • Zdefiniuj DispatcherServlet dla Batch Admin w 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> 
    
  • Dodaje nadpisanie dla resourceService w appContext root:

    <bean id="resourceService" 
    class="org.springframework.batch.admin.web.resources.DefaultResourceService"> 
        <property name="servletPath" value="/batch" /> 
    </bean> 
    
  • Zmienić standard.ftl w wiosenno-wsadowym-admin -resources-1.2.0-RELEASE.jar, aby podać adres URL:

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

+0

Twoje +1 odpowiedź została powiązana tutaj: http://forum.springsource.org/showthread.php?116685-Spring-Batch-Admin-App-fails-to-create-configuration-bean – opyate

+0

Czy możesz opublikować szczegóły swojego pom.xml gdzie zadeklarować zależności na plikach jar jar-spring-admin? – emeraldjava

7

Jeśli używasz Spring-batch-admin 1.2.1, nie trzeba modyfikować standard.ftl pliku. Powinieneś dodać oba pliki servlet-config.xml i webapp-config.xml z org/springframework/batch/admin/web/resources. Oto kroki (powtórzony ponownie):

<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> 

Dodaj resourceService fasoli w applicationContext:

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

Zgodnie z odpowiedzią na to pytanie, definicja 'resourceService' powinna się znaleźć w' META-INF \ spring \ batch \ override'. http://stackoverflow.com/questions/23880396/batch-admin-console-dispatcherservlet-using-internalresourceviewresolver-inste – Stewart

3

Zamiast o przedstawieniu pliki XML wiosna partia administratora tak:

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

ty może również odnosić się do własnego pliku XML

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

Zawierające somethink tak:

<?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

Mam osadzone Wiosna Batch administratora do mojego wniosku, że pakuje się w postaci pliku JAR. Zrobiłem to, ponieważ ta aplikacja istniała już i uruchamiam ją za pomocą J2SE, a nie w kontenerze serwletów, takim jak Tomcat. Co więcej, nie podobało mi się, że muszę wdrożyć serwer WWW/serwer serwletów dla zadań wsadowych. Aplikacja Spring Batch Admin to dobra implementacja referencyjna i prawie wszystkie interfejsy mogą być zastąpione przy użyciu niestandardowych klas przez Spring DI. Ponadto cały interfejs użytkownika był oparty na szablonach. W związku z tym wyodrębniłem odpowiednie zasoby i uruchom konsolę, używając wbudowanego serwera Jetty, który uruchamia moja aplikacja. To, w rezultacie, odwróciło zamknięcie od aplikacji wewnątrz kontenera serwletu do kontenera serwletu wewnątrz aplikacji.

Zrzuty ekranu są tutaj: https://github.com/regunathb/Trooper/wiki/Trooper-Batch-Web-Console

źródłowy, zasoby konfiguracyjne itp są tutaj: https://github.com/regunathb/Trooper/tree/master/batch-core (sprawdź folder/src/main/resources/WEB-INF dla internetowych związanych configs i zasobów)

Powiązane problemy