TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.4.2.RELEASE, 2023-3-31, commit-id:a621273
> INDEX

概要

TERASOLUNA Batch Framework for Java (5.x)の構成について説明し、TERASOLUNA Batch Framework for Java (5.x)の担当範囲を示す。

TERASOLUNA Batch Framework for Java (5.x)のスタック

TERASOLUNA Batch Framework for Java (5.x)で使用するSoftware Frameworkは、 Spring Framework (Spring Batch) を中心としたOSSの組み合わせである。以下にTERASOLUNA Batch Framework for Java (5.x)のスタック概略図を示す。

TERASOLUNA Batch Framework for Java (5.x) Stack
図 1. TERASOLUNA Batch Framework for Java (5.x)のスタック概略図

ジョブスケジューラやデータベースなどの製品についての説明は、本ガイドラインの説明対象外とする。

利用するOSSのバージョン

TERASOLUNA Batch Framework for Java (5.x)のバージョン5.4.2.RELEASEで利用するOSSのバージョン一覧を以下に示す。

TERASOLUNA Batch Framework for Java (5.x)で使用するOSSのバージョンは、原則として、Spring Boot Dependenciesの定義に準じている。 なお、バージョン5.4.2.RELEASEにおけるSpring Boot Dependenciesのバージョンは、 2.7.7である。

表 1. OSSバージョン一覧
Type GroupId ArtifactId Version Spring Boot Dependencies Remarks

Spring

org.springframework

spring-aop

5.3.24

*

Spring

org.springframework

spring-beans

5.3.24

*

Spring

org.springframework

spring-context

5.3.24

*

Spring

org.springframework

spring-expression

5.3.24

*

Spring

org.springframework

spring-core

5.3.24

*

Spring

org.springframework

spring-tx

5.3.24

*

Spring

org.springframework

spring-jdbc

5.3.24

*

Spring

org.springframework

spring-oxm

5.3.24

*

Spring Batch

org.springframework.batch

spring-batch-core

4.3.7

*

Spring Batch

org.springframework.batch

spring-batch-infrastructure

4.3.7

*

Spring Retry

org.springframework.retry

spring-retry

1.3.4

*

MyBatis3

org.mybatis

mybatis

3.5.7

*1

MyBatis3

org.mybatis

mybatis-spring

2.0.6

*1

DI

jakarta.inject

jakarta.inject-api

1.0.5

*1

ログ出力

ch.qos.logback

logback-classic

1.2.11

*

ログ出力

org.slf4j

jcl-over-slf4j

1.7.36

*

ログ出力

org.slf4j

slf4j-api

1.7.36

*

入力チェック

jakarta.validation

jakarta.validation-api

2.0.2

*

入力チェック

org.hibernate.validator

hibernate-validator

6.2.5.Final

*

コネクションプール

org.apache.commons

commons-dbcp2

2.9.0

*

EL式

org.glassfish

jakarta.el

3.0.4

*

インメモリデータベース

com.h2database

h2

2.1.214

*

JDBCドライバ

org.postgresql

postgresql

42.5.1

*2

JSON

com.fasterxml.jackson.core

jackson-databind

2.13.4.2

*

XML

jakarta.xml.bind

jakarta.xml.bind-api

2.3.3

*

XML

com.sun.xml.bind

jaxb-core

2.3.0.1

*1

XML

com.sun.xml.bind

jaxb-impl

2.3.7

*1

Remarksについて
  1. Spring Boot Dependenciesがバージョンを定義していないため、TERASOLUNA Batch Framework for Java (5.x)で独自依存しているライブラリ

  2. Spring Boot Dependenciesがバージョンを定義しているが、TERASOLUNA Batch Framework for Java (5.x)が異なるバージョンを定義しているライブラリ

TERASOLUNA Batch Framework for Java (5.x)の構成要素

TERASOLUNA Batch Framework for Java (5.x)のSoftware Framework構成要素について説明する。 以下にSoftware Framework構成要素の概略図を示す。各要素の概要は後述する。

TERASOLUNA Batch Framework for Java (5.x) Components of Software Framework
図 2. Software Framework構成要素の概略図

以下に、各要素の概要を示す。

基盤フレームワーク

フレームワークの基盤として、Spring Frameworkを利用する。DIコンテナをはじめ各種機能を活用する。

バッチフレームワーク

バッチフレームワークとして、Spring Batchを利用する。同期実行にはSpring Batchが提供するCommandLineJobRunnerを利用する。

非同期実行

非同期実行を実現する方法として、以下の機能を利用する。

DBポーリングによる周期起動

TERASOLUNA Batch Framework for Java (5.x)が提供するライブラリを利用する。

Webコンテナ起動

Spring MVCを使用して、Spring Batchと連携をする。

O/R Mapper

MyBatisを利用し、Spring Frameworkとの連携ライブラリとして、MyBatis-Springを使用する。

ファイルアクセス

Spring Batchから提供されている機能 に加えて、補助機能をTERASOLUNA Batch Framework for Java (5.x)が提供する。

ロギング

ロガーはAPIにSLF4J、実装にLogbackを利用する。

Logback 1.2.7について

Logback1.2.7には、攻撃者が設定ファイルを変更できる場合、JNDIを用いる機能を利用してリモートコード実行が可能な脆弱性(CVE-2021-42550)が存在している。 ただし、この脆弱性を利用できる状況は攻撃者が設定ファイルを変更できる状態であり、その状況自体がアプリケーション起因や環境起因の重大な脆弱性となる。

このような重大な脆弱性がアプリケーションや環境にない限り、本脆弱性の影響を受けることはない。
(このような環境にある場合、本脆弱性を利用せずとも、RCEが可能である)

この脆弱性に対応するために、Logback1.2.8ではJNDIに関する機能をすべて削除し、以降のバージョンで脆弱性に対応した機能を復活させているが、削除された機能がすべて復活しているわけではない。
バージョンを上げることによりアプリケーションが動かなくなる可能性を考慮し、Logbackのバージョンを1.2.7のままにしているため、必要に応じてLogbackのバージョンアップを検討されたい。

バリデーション
単項目チェック

単項目チェックにはBean Validationを利用し、実装はHibernate Validatorを使用する。

相関チェック

相関チェックにはBean Validation、もしくはSpring Validationを利用する。

コネクションプール

コネクションプールには、DBCPを利用する。

TERASOLUNA Batch Framework for Java (5.x)が実装を提供する機能

TERASOLUNA Batch Framework for Java (5.x)が実装を提供する機能を以下に示す。

表 2. TERASOLUNA Batch Framework for Java (5.x)が実装を提供する機能一覧

機能名

概要

"非同期実行(DBポーリング)"

DBポーリングによる非同期実行を実現する。

"ファイルアクセス"

改行なしの固定長ファイルをバイト数で読み込む。

固定長レコードをバイト数で各項目に分解する。

可変長レコードで囲み文字の出力を制御する。

TERASOLUNA Batch Framework for Java (5.x) Development Guideline - version 5.4.2.RELEASE, 2023-3-31, commit-id:a621273