Oracle WebLogic Server 12cR2新機能詳説──第3回 Java EE 7完全準拠

Oracle Java & Developers編集部
2016-08-03 15:00:00
  • このエントリーをはてなブックマークに追加

Oracle WebLogic Server 12cR2の3つ目の目玉となる新機能は「Java EE 7完全準拠」だ。同機能により、企業はいよいよJava EE 7への本格移行を進めることが可能となった。

最新のJava EE 7に完全準拠

 本企画では、「Oracle WebLogic Server 12cRelease 2(R2)」で追加された主な新機能として次の3つを紹介している。

  • マルチテナントへの対応
  • サービス継続性の強化(WebLogic Server Continuous Availability)
  • Java EE 7への完全準拠およびDevOps対応の拡張

 最終回となる今回は、3つ目の新機能である「Java EE 7完全準拠」の主な特徴を紹介する。

 Java EEの現行の最新バージョンであるJava EE 7は、「開発生産性の向上」、「HTML5対応」、「エンタープライズの要求への対応」という3つの主要テーマを掲げて2013年にリリースされた。

 Java EE 7では、多くの既存APIがアップデートされたのに加えて、4つの新たなAPIが追加された。Oracle WebLogic Serverでは、前バージョンの12cR1で「Java API for JSON」や「Java API for WebSocket」など一部の新APIに先行対応していたが、12cR2において全ての新仕様への完全準拠を果たした。


※クリックすると拡大画像が見られます

 なかでもご注目いただきたいのが、新たに追加された「Batch Applications(JSR 352)」と「Concurrency Utilities for Java EE(JSR 236)」を完全にサポートしている点だ。ここでは、この2つの新機能について、Oracle WebLogic Serverでの使用方法を交えて詳しく紹介する。

Javaによるバッチ処理の実装を可能にする「jBatch」

 Batch Applicationsは、バッチ・ジョブをJavaで実装するためのフレームワークを規定した仕様であり、通称「jBatch」と呼ばれている。

 今日でも、エンタープライズ・アプリケーションの分野では依然としてバッチ処理のニーズが多い。Java EEアプリケーションにおいてバッチ処理の実装にjBatchを使うメリットとしては、次のような点が挙げられる。

  • バッチ・ジョブの設計を標準化できる
  • 高機能なバッチ処理を容易に実装できる
  • Java EEの各種機能との連携が容易に行える

 jBatchには、バッチ処理のチェックポイントによる分岐や例外処理、並列処理などといった高度な機能が標準で備わっており、開発者はこれらの機能を簡単なコーディングで利用することができる。また、jBatchはJava EEの仕組みの上で動作するため、JAX-RSやJMS(Java Message Service)との連携が容易なだけでなく、アプリケーション・サーバのリソースへのアクセスなども通常のJava EEアプリケーションと同様の手順で行うことが可能となっている。

 jBatchのアーキテクチャは、大きく次の4つの要素で構成される。

  • Job:バッチ・ジョブ本体
  • JobOperator:バッチ・ジョブの管理インタフェース
  • JobRepository:実行中/実行済みのジョブの情報を保持するリポジトリ
  • Runtime:バッチ・ジョブの実行環境
jBatchのアーキテクチャjBatchのアーキテクチャ

 1つのJobは、「ステップ(Step)」、「フロー(Flow)」、「スプリット(Split)」、「条件分岐(Decider)」という4つの要素で構成される。ステップはバッチ・ジョブにおける1つの独立したフェーズであり、ステップと条件分岐で構成される一連のシーケンスをフローと呼ぶ。バッチ・ジョブはフローを1つの単位として実行される。フローは並列実行することが可能であり、並列実行するフローの組み合わせをスプリットと呼ぶ。また、jBatchは条件分岐の仕組みを備えており、ステップの完了ステータスを使用して、次のステップに進むか、バッチ・ジョブを終了するかを判断するフェーズを設けることができる。

Jobの構成例Jobの構成例

 開発の観点では、ステップと条件分岐のロジックはJavaプログラムとして実装する。また、バッチ・ジョブの構造や順序制御などの定義はジョブ定義言語(Job Definition)を使ってXMLベースの設定ファイルによって記述する。

 ステップをJavaプログラムとして実装する場合、「バッチレット(Batchlet)方式」と「チャンク(Chunk)方式」という2種類の方式を選ぶことができる。バッチレット方式はステップごとに1回だけ処理を呼び出す方式であり、1つのインタフェースを実装するだけで定義することができる。

 一方、チャンク方式は、読み込みと処理を一定の回数繰り返した後に、結果をまとめて出力する方式だ。読み込み開始から出力までを1チャンクとし、チャンクの繰り返しによってステップを定義する。

 チャンク方式では、読み込み、処理、出力に相当する3つのインタフェースを実装しなければならないが、例外発生時にスキップやリトライ、ロールバックなどの挙動を設定できること、1つのチャンクが終了する度にJobRepositoryにチェックポイントを保存し、問題発生時にはチェックポイントからジョブを再開できるなどの耐障害性を備えているといったメリットがある。

チャンク方式によるステップの挙動
チャンク方式によるステップの挙動

 実際にjBatchでバッチ処理を行う場合には、その前準備として次のような作業が必要となる。

  • JobRepositoryの作成
  • JobRepositoryに接続するデータソース定義の作成
  • バッチ・ランタイムの設定

 Oracle WebLogic Serverでは、これらの作業をサポートする機能が提供されており、煩雑な作業を行うことなくjBatchの利用環境を整えられるようになっている。

 まずJobRepositoryだが、Oracle WebLogic Serverでは次の2種類のJobRepositoryが利用できる。

  • デフォルトJobRepository
  • カスタムJobRepository

 デフォルトJobRepositoryとは、組み込みデータベース「Derby」を用いて提供されるリポジトリであり、特別な構成手続きを行わなくても利用できる。これは開発段階で手軽にjBatchの環境を整えるために用意されたものだ。

 デフォルトJobRepositoryは、あくまでも開発環境向けのものであり、本番環境ではアプリケーションごとにカスタムJobRepositoryを用意する必要がある。Oracle WebLogic Serverでは、SQLのスクリプトやユーティリティによってリポジトリを構成できるサポート・ツールが提供されている。また、使用するデータベースとしては、Oracle DatabaseやMySQLなど、任意のRDBMSを選択可能となっている。

 JobRepositoryに接続するデータソース定義の作成やバッチ・ランタイムの設定は、Oracle WebLogic Serverの管理用インタフェースから行える。jBatchに関連する構成/監視用のインタフェースとしては、WebLogic Server管理コンソールとWLST(WebLogic Scripting Tool)の2つがある。構成管理だけでなく、ジョブの実行状況やステップと実行状況の監視なども、これらのインタフェースで行うことができる。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]