2017-09-15 3 views
0

JavaSEのJSR352実装を使用してJavaバッチアプリケーションを作成しました。私はリーダー、プロセッサー、ライターを持っています。Javaバッチ(JSR 352)はSE JDKの一部ですか? (BatchRuntimeはJoboperatorに対してNULLを返します)

JavaSE環境のコンソールからこのJavaアプリケーションを実行しているので、main(String[] args)メソッドで次のコードを使用してジョブを開始します。

final JobOperator jobOperator = BatchRuntime.getJobOperator(); 
jobOperator.start("Job.xml", null); 

しかし、getJobOperator()はNULLを返し、次のエラーメッセージが表示されます

WARNING:javax.batch.runtime.BatchRuntimeザ・ServiceLoaderはJobOperatorためimplemenationを見つけることが できませんでした。 META-INF/services/javax.batch.operations.JobOperatorファイルのクラスパスを確認してください。

JobOperatorインターフェイスの実装を記述する必要がありますか?

答えて

1

javax.batch.* APIは、EE 7プラットフォームの一部ですが、SEで使用できるように設計されています(完全にEEプラットフォームを必要としません)。ただし、SEプラットフォームの一部として指定されていないため、JDKの一部にはなりません。 SpringBatchReference ImplementationなどのJavaバッチ実装を使用する必要があります。

+0

このJavaバッチジョブは最終的にWebsphereにデプロイされますが、開発中や特定の状況では、JEEコンテナにデプロイしてRESTインターフェイス経由で起動するのではなく、Javaコンソールアプリケーションとして実行できるようにしたい。 – yathirigan

+0

> Javaバッチ実装を使用する必要があります。<申し訳ありませんが、私は完全に理解していませんでした。つまり、javax.batch APIの上にSpringBatchを使用するか、参照実装プロジェクト(JobOperator実装を持つ)のjarをインポートする必要がありますか? – yathirigan

+0

私はすでにプロジェクトのクラスパスにjavaee-api-7.0.jarを持っています。私はそれが十分であるべきだと思った。 – yathirigan

関連する問題