8.12.3 トランザクション設計
障害からの回復を容易にするために,FTP連携では次の方針でトランザクションを設計します。
-
FTPクライアントからのデータ転送要求からデータ転送完了の応答までを1フェーズのトランザクションとします。
-
ファイルやリソースの回復は,ファイルを取り扱うFTP受付,FTPアダプタ,およびファイル操作アダプタが実行します。
(1) トランザクションの範囲
正常終了や異常終了などのFTPクライアントへの応答内容と,ビジネスプロセスの処理ステータスと同期をとるために,EJBのトランザクションを利用したトランザクション管理をします。
トランザクションの範囲をファイル転送パターンごとに説明します。
(a) 同期型のビジネスプロセスの場合
同期型のビジネスプロセスの場合のトランザクション範囲を図に示します。
なお,同期型のビジネスプロセスを利用したファイル転送パターンについては,「8.3.1(1) 同期型ビジネスプロセスを利用したファイル転送の流れ」および「8.3.2 FTPサーバからFTPクライアントへのファイル転送」を参照してください。
(b) 非同期型のビジネスプロセスの場合
非同期型のビジネスプロセスの場合のトランザクション範囲を図に示します。
なお,非同期型のビジネスプロセスを利用したファイル転送パターンについては,「8.3.1(2) 非同期型ビジネスプロセスを利用したファイル転送の流れ」を参照してください。
(c) FTPクライアントから別のFTPクライアントへのファイル転送の場合
FTPクライアントから別のFTPクライアントへのファイル転送の場合の,トランザクション範囲を図に示します。
なお,FTPクライアントから別のFTPクライアントへのファイル転送パターンについては,「8.3.3 FTPクライアントから別のFTPクライアントへのファイル転送」を参照してください。
(2) 障害発生時のファイルの削除
FTP連携では,障害が発生した場合,処理結果とファイルの状態を一致させるために各コンポーネントが出力ファイルを削除します。
FTP連携の各処理と,対応するコンポーネントの処理を次の表に示します。
処理 |
コンポーネント |
想定される障害要因 |
障害時のファイルの扱い |
|
---|---|---|---|---|
入力ファイル |
出力ファイル |
|||
FTPクライアントからのファイル送信 |
FTP受付 |
|
− |
削除 |
FTPクライアントからのファイル受信 |
FTP受付 |
|
処理前の状態を保証 |
− |
FTPサーバへのファイル送信 |
FTPアダプタ |
|
処理前の状態を保証 |
− |
FTPサーバからのファイル受信 |
FTPアダプタ |
|
− |
削除 |
ファイル変換 |
ファイル操作アダプタ |
|
処理前の状態を保証 |
削除 |
ファイル複写 |
ファイル操作アダプタ |
|
処理前の状態を保証 |
削除 |
なお,次の要因でファイルの削除が正常に終了しない場合は,システムを再起動してください。※1※2
-
ファイルロックが解除できない
-
ネットワーク障害やディスク障害などのハードウェア障害によって,ファイルにアクセスできない
-
システムダウンによってファイルを削除できない
- 注※1
-
障害発生時に書き込み中のファイルが削除できないときは,そのファイルに対する排他ロックが解除されません。そのため,ほかのビジネスプロセスからのアクセスによって,削除対象のファイルに障害が及ぶことはありません。
- 注※2
-
共有フォルダ上の障害ファイルを削除する場合,クラスタを構成する全システムを停止する必要があります。
(3) ビジネスプロセス設計時の注意
1つのファイル転送処理全体を1フェーズのトランザクションと考えるには,更新されるリソースは1つと見なす必要があります。FTP連携では,複数のリソース更新の同期を合わせるための2フェーズ・コミットはできません。そのため,ビジネスプロセス設計時に,次のことを考慮する必要があります。
-
1つのビジネスプロセス内で複数のリソースを更新する場合,リソース間の更新はビジネスプロセスが同期を合わせるように設計する必要があります。
-
非同期型のビジネスプロセスで,FTPクライアントに応答を返したあとに障害が発生した場合,ビジネスプロセスを再開することでロールフォワード処理をする必要があります。