4

ドキュメントに記載されているように SPring Batch に依存するカスタム MVC アプリケーションを使用しており、この SO の質問Integrating Spring Batch Admin into an existing applicationによって支援されています。

ここでの問題は、Web アプリがさまざまな URL を適切なコントローラーにマップし始めると、ジョブ構成のステップが爆破されることです。

2012-06-04 10:17:54,966 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - <Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'>
2012-06-04 10:17:55,512 INFO [org.springframework.ui.freemarker.SpringTemplateLoader] - <SpringTemplateLoader for FreeMarker: using resource loader [WebApplicationContext for namespace 'admin-servlet': startup date [Mon Jun 04 10:17:54 EDT 2012]; parent: Root WebApplicationContext] and template loader path [/WEB-INF/web/]>
2012-06-04 10:17:55,512 INFO [org.springframework.ui.freemarker.SpringTemplateLoader] - <SpringTemplateLoader for FreeMarker: using resource loader [WebApplicationContext for namespace 'admin-servlet': startup date [Mon Jun 04 10:17:54 EDT 2012]; parent: Root WebApplicationContext] and template loader path [classpath:/org/springframework/batch/admin/web/]>
2012-06-04 10:17:55,512 INFO [org.springframework.batch.admin.web.freemarker.HippyFreeMarkerConfigurer] - <ClassTemplateLoader for Spring macros added to FreeMarker configuration>
2012-06-04 10:17:55,528 INFO [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] - <Mapped URL path [/configuration] onto handler 'configurationHandler'>
2012-06-04 10:17:56,230 INFO [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping] - <Mapped URL path [/job-configuration] onto handler '/job-configuration'>
...
2012-06-04 10:17:56,230 ERROR [org.springframework.web.servlet.DispatcherServlet] - <Context initialization failed>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/job-configuration.json': Cannot resolve reference to bean 'job-configurations' while setting bean property 'requestChannel'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'job-configurations' is defined

誰でもこれに遭遇しますか?このアプリは、完全に分離して動作するシンプルなスプリング バッチ jar に依存しており、そのアーティファクトから必要なジョブ Bean をプルすることを期待しています。

4

2 に答える 2

1

私はこの質問を同僚の何人かに提起しましたが、多くの典型的なSpringデザインパターンに反するSpringBatchAdminの設計の欠陥と私が考えるもののようです。

依存するSpringBatchAdmin jarは、データソースを含むソリューションのコンテキストについて「よく知っています」。これに伴う問題は、適切なWebアプリでは、データソースが実行時に数または環境変数(環境、データセンター、アプリサーバー)に基づいて動的に決定される可能性があり、Dave Syer(MysqlまたはHSQL)ほど単純ではないことです。アプローチ。私は春のフォーラムで彼がこれを支持している投稿を読んだことがありますが、質問者への侮辱に接しています。

バッチジョブで複数のデータソース(つまり、ソースDBと宛先DB)を使用する場合は、ますます複雑になります。また、関連するすべてのBeanはすでにDaveのHSQLドライバーDS、関連する.sqlファイルおよびinitスクリプトに接続されているため、Webアプリケーションにデータソースをロードするほど単純ではありませんでした。

そしてこれにより、jobrepository(expected)、jobExplorer、jobService、およびMETA-INF / spring / batch / overrideディレクトリ内の個別のファイルを持つ他のいくつかを含む、バッチ管理jarからの基本的にすべてのデータソース関連のBeanをオーバーライドすることになりました。各ファイルは、Spring 3.1のProfile名前空間を利用して適切なデータソースをロードし、必要なすべてのBeanに注入します。

于 2012-06-18T18:18:54.300 に答える