2011-06-22 9 views
11

Spring BatchとSpring MVCを使用するアプリケーションがあります。私はSpring Batch Adminを別の戦争として展開することができ、自分のアプリケーションに使用する同じDBに対して使用することができます。ただし、自分のアプリケーションに統合したいと思うかもしれません。既存のアプリケーションにSpring Batch Adminを統合する

これを行う簡単な方法はありますか、それをフォークしてそこから行く必要がありますか?

答えて

14

これは明らかにこの通りです。thread;

  • web.xmlで一括管理のためのDispatcherServletを定義します。

    <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> 
    
  • がルートAppContextをしてresourceServiceのオーバーライドを追加します。

    <bean id="resourceService" 
    class="org.springframework.batch.admin.web.resources.DefaultResourceService"> 
        <property name="servletPath" value="/batch" /> 
    </bean> 
    
  • 春バッチ管理者で変更standard.ftl URLを反映する-resources-1.2.0-RELEASE.jar:

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

+0

+1あなた答えはここにリンクされています:http://forum.springsource.org/showthread.php?116685-Spring-Batch-Admin-App-fails-to-create-configuration-bean – opyate

+0

pom.xmlの詳細を投稿できますか? spring-batch-admin jarファイルの依存関係を宣言しますか? – emeraldjava

7

あなたがSpring-batch-admin 1.2.1を使用している場合は、standard.ftlファイルを変更する必要はありません。そして、org/springframework/batch/admin/web/resourcesからservlet-config.xmlwebapp-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> 

あなたapplicationContextresourceService Beanを追加します。

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

この質問に対する答えとして、 'resourceService'定義は' META-INF \ spring \ batch \ override'になければなりません。 http://stackoverflow.com/questions/23880396/batch-admin-console-dispatcherservlet-using-internalresourceviewresolver-inste – Stewart

3

代わりに、このような春のバッチ管理XMLファイルを参照する:

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

あなたは独自のXMLファイルを参照することもできます

このような

含むsomethink:私はjarファイルとしてパッケージ化された自分のアプリケーションに春のバッチ管理者が埋め込まれている

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

。私はこのアプリがすでに存在していたので、J2SEを使用して実行し、Tomcatのようなサーブレットコンテナでは実行しなかったため、これを行いました。さらに、私は、バッチジョブのためのWebサーバー/サーブレットコンテナを配備する必要がないというアイデアはあまり気に入らなかった。 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(ウェブ関連のconfigsとリソースのための/ srcに/メイン/リソース/ WEB-INFフォルダを確認してください)