Class ThreadContextHandler

java.lang.Object
nablarch.common.handler.threadcontext.ThreadContextHandler
All Implemented Interfaces:
Handler<Object,Object>, InboundHandleable, OutboundHandleable

public class ThreadContextHandler extends Object implements Handler<Object,Object>, InboundHandleable, OutboundHandleable
スレッドコンテキストに保持される共通属性を管理するハンドラ。 フレームワークには、スレッドコンテキストにユーザID・リクエストID・言語設定を保持する実装が含まれている。 これらを有効化するには以下のリポジトリ設定を追加する。 (同様にプロジェクト固有の属性を追加することも可能である。)
 <component class="nablarch.common.handler.threadcontext.ThreadContextHandler">
   <property name="attributes">
     <list>
       <!-- ユーザID -->
       <component class="nablarch.common.handler.threadcontext.UserIdAttribute">
         <property name="sessionKey"  value="user.id" />
         <property name="anonymousId" value="guest" />
       </component>
       
       <!-- リクエストID -->
       <component class="nablarch.common.handler.threadcontext.RequestIdAttribute" />
       
       <!-- 言語 -->
       <component class="nablarch.common.handler.threadcontext.LanguageAttribute">
           <property name="defaultLanguage" value="ja" />
       </component>
     </list>
   </property>
 </component>
 
  • Constructor Details

    • ThreadContextHandler

      public ThreadContextHandler(ThreadContextAttribute... attributes)
      引数に渡されたスレッドコンテキスト属性を管理するハンドラを生成する。
       このメソッドの処理は以下のソースコードと等価である。
       
           new ThreadContextHandler()
               .setAttributes(Arrays.asList(attributes))
       
      Parameters:
      attributes - スレッドコンテキスト属性
    • ThreadContextHandler

      public ThreadContextHandler()
      デフォルトコンストラクタ
  • Method Details

    • handle

      public Object handle(Object input, ExecutionContext ctx)
      入力データに対する処理を実行する。
       このクラスの実装では以下の処理を行う。
       
         1. スレッドコンテキスト上の全てのエントリを削除する。
         2. このハンドラに登録されている全ての属性について、
            キー(ThreadContextAttribute#getKey()の結果)と値(ThreadContextAttribute#getValue()の結果)を
            スレッドコンテキストに格納する。
         3. 後続のリクエストハンドラに処理を委譲する。
       
      Specified by:
      handle in interface Handler<Object,Object>
      Parameters:
      input - 入力データ
      ctx - 実行コンテキスト
      Returns:
      処理結果データ
    • setAttributes

      public ThreadContextHandler setAttributes(List<ThreadContextAttribute> attributes)
      このハンドラが管理する属性のリストを登録する。
      Parameters:
      attributes - このハンドラが管理する属性のリスト
      Returns:
      このオブジェクト自体
    • handleInbound

      public Result handleInbound(ExecutionContext context)
      Description copied from interface: InboundHandleable
      前処理を実装する。
      Specified by:
      handleInbound in interface InboundHandleable
      Parameters:
      context - ExecutionContext
      Returns:
      処理結果オブジェクト
    • handleOutbound

      public Result handleOutbound(ExecutionContext context)
      Description copied from interface: OutboundHandleable
      後処理を実装する。
      Specified by:
      handleOutbound in interface OutboundHandleable
      Parameters:
      context - ExecutionContext
      Returns:
      処理結果オブジェクト