3.2.1. アーキテクチャ概要

HTTPメッセージングでは、外部(ブラウザや外部システムなど)から送信されたhttpメッセージ を処理するウェブサービスを構築するための機能を提供している。

重要

本機能ではなく、 RESTfulウェブサービス の使用を推奨する。 詳細は、 RESTfulウェブサービスを推奨する理由 を参照。

3.2.1.1. HTTPメッセージングの構成

Nablarchウェブアプリケーションと同じ構成となる。 詳細は、 ウェブアプリケーションの構成 を参照。

3.2.1.2. HTTPメッセージングの処理の流れ

HTTPメッセージング機能がリクエストを処理し、レスポンスを返却するまでの処理の流れを以下に示す。

../../../../_images/http_messaging_flow.png
  1. WebFrontController ( javax.servlet.Filter の実装クラス)がrequestを受信する。
  2. WebFrontController は、requestに対する処理をハンドラキュー(handler queue)に委譲する。
  3. ハンドラキューに設定されたディスパッチハンドラ(DispatchHandler) が、URIを元に処理すべきアクションクラス(action class)を特定しハンドラキューの末尾に追加する。
  4. アクションクラス(action class)は、フォームクラス(form class)やエンティティクラス(entity class)を使用して業務ロジック(business logic) を実行する。
    各クラスの詳細は、 アプリケーションの責務配置 を参照。
  5. アクションクラス(action class)は、処理結果を示す ResponseMessage を作成し返却する。
  6. ハンドラキュー内の HTTPメッセージングレスポンス変換ハンドラ が、 ResponseMessage をクライアントに返却するレスポンス(jsonやxmlなど)に変換し、クライアントへ応答を返す。

3.2.1.3. HTTPメッセージングで使用するハンドラ

Nablarchでは、HTTPメッセージングを使用したウェブサービスを構築するために必要なハンドラを標準で幾つか提供している。 プロジェクトの要件に従い、ハンドラキューを構築すること。(要件によっては、プロジェクトカスタムなハンドラを作成することになる)

各ハンドラの詳細は、リンク先を参照すること。

リクエストやレスポンスの変換を行うハンドラ
リクエストのフィルタリングを行うハンドラ
データベースに関連するハンドラ
エラー処理に関するハンドラ
その他のハンドラ

3.2.1.4. HTTPメッセージングの最小ハンドラ構成

HTTPメッセージングを使用したウェブサービスを構築する際の必要最小限のハンドラキューを以下に示す。 これをベースに、プロジェクト要件に従ってNablarchの標準ハンドラやプロジェクトで作成したカスタムハンドラを追加する。

最小ハンドラ構成
No. ハンドラ 往路処理 復路処理 例外処理
1 スレッドコンテキスト変数削除ハンドラ   スレッドコンテキスト変数管理ハンドラ でスレッドローカル上に設定した値を全て削除する。  
2 グローバルエラーハンドラ     実行時例外、またはエラーの場合、ログ出力を行う。
3 HTTPレスポンスハンドラ   サーブレットフォーワード、リダイレクト、レスポンス書き込みのいずれかを行う。 実行時例外、またはエラーの場合、既定のエラーページを表示する。
4 スレッドコンテキスト変数管理ハンドラ リクエストの情報からリクエストIDなどのスレッドコンテキスト変数を初期化する。    
5 HTTPメッセージングエラー制御ハンドラ   後続ハンドラで生成したレスポンスのボディが空の場合、ステータスコードに応じたデフォルトのボディを設定する。 ログ出力及び、例外に応じたレスポンスを生成する。
6 リクエストディスパッチハンドラ リクエストパスから処理対象の業務アクションを特定し、ハンドラキューの末尾に追加する。    
7 HTTPメッセージングリクエスト変換ハンドラ httpリクエストのボディを解析し RequestMessage を生成し、 後続のハンドラにリクエストオブジェクトとして引き渡す。    
8 データベース接続管理ハンドラ DB接続を取得する。 DB接続を解放する。  
9 HTTPメッセージングレスポンス変換ハンドラ     業務アクションが生成したエラー用のメッセージを元に、エラー用のhttpスポンスを生成する。
10 トランザクション制御ハンドラ トランザクションを開始する。 トランザクションをコミットする。 トランザクションをロールバックする。
11 HTTPメッセージングレスポンス変換ハンドラ   業務アクションが生成したメッセージを元に、http用のレスポンスを生成する。 後続ハンドラで発生した例外を元にエラー用のhttpレスポンスを生成する。

3.2.1.5. HTTPメッセージングで使用するアクション

Nablarchでは、HTTPメッセージングを構築するために必要なアクションクラスを標準で提供している。 詳細は、リンク先を参照すること。