Interceptor実装サービス jp.ossc.nimbus.service.aop.interceptor.servlet.ServletRequestExchangeInterceptorService

jp.ossc.nimbus.service.aop.interceptor.servlet.StreamExchangeInterceptorServiceは、ServletRequestの入力ストリーム及びServletResponseの出力ストリームを任意のオブジェクトに交換するInterceptor実装サービスです。

このサービスは、複合的なサービスで、以下のサービスを下位サービスとして使用します。

下位サービスインタフェース用途
jp.ossc.nimbus.service.beancontrol.interfaces.BeanFlowInvokerFactory要求オブジェクトを生成する業務フローを取得する。
jp.ossc.nimbus.util.converter.ConverterServletRequestの入力ストリーム及びServletResponseの出力ストリームを任意のオブジェクトに変換する。
jp.ossc.nimbus.service.context.ThreadContextService交換後のオブジェクトを設定するスレッドコンテキスト。
jp.ossc.nimbus.service.journal.Journalジャーナルを出力する。
jp.ossc.nimbus.service.journal.editorfinder.EditorFinderジャーナルを編集するjp.ossc.nimbus.service.journal.JournalEditorを見つける。

以下に簡単なサービス定義を示します。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE server PUBLIC
  3. "-//Nimbus//DTD Nimbus 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/nimbus-service_1_0.dtd">
  5. <server>
  6. <manager>
  7. <!-- HServletRequestの入力ストリーム及びServletResponseの出力ストリームを任意のオブジェクトに交換するInterceptorサービス -->
  8. <service name="StreamExchangeInterceptor"
  9. code="jp.ossc.nimbus.service.aop.interceptor.servlet.StreamExchangeInterceptorService">
  10. <!-- 要求オブジェクトを業務フローで取得する場合に使用するBeanFlowInvokerFactoryサービスのサービス名を設定する -->
  11. <attribute name="BeanFlowInvokerFactoryServiceName">#BeanFlowInvokerFactory</attribute>
  12. <!-- 要求オブジェクトを業務フローで取得する場合に、呼び出すフロー名として、リクエストされたサーブレットパスの前に付加するプレフィクスを設定する -->
  13. <attribute name="RequestObjectFlowNamePrefix">dataset/request</attribute>
  14. <!-- ServletRequestの入力ストリームを任意のオブジェクトに変換するConverterサービスのサービス名を設定する -->
  15. <attribute name="RequestStreamConverterServiceName">#DataSetJSONConverter</attribute>
  16. <!-- ServletResponseの出力ストリームを任意のオブジェクトに変換するConverterサービスのサービス名を設定する -->
  17. <attribute name="ResponseStreamConverterServiceName">#DataSetJSONConverter</attribute>
  18. <depends>BeanFlowInvokerFactory</depends>
  19. <depends>DataSetJSONConverter</depends>
  20. </service>
  21. <!-- 業務フローを生成するBeanFlowInvokerFactoryサービス -->
  22. <service name="BeanFlowInvokerFactory"
  23. code="jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryService">
  24. <attribute name="DirPaths">flow</attribute>
  25. <attribute name="BeanFlowInvokerAccessClass">jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerAccessImpl2</attribute>
  26. </service>
  27. <!-- ストリームとDataSetを相互変換するConverterサービス -->
  28. <service name="DataSetJSONConverter"
  29. code="jp.ossc.nimbus.util.converter.DataSetJSONConverter"/>
  30. </manager>
  31. </server>

上記で使用するDataSetを生成する業務フローの例を示す。

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE flows PUBLIC
  3. "-//Nimbus//DTD Nimbus Bean Flow 1.0//JA"
  4. "http://nimbus.sourceforge.jp/dtd/beanflow_1_0.dtd">
  5. <flows>
  6. <!-- パス"/Login.*"用のDataSetを生成する業務フロー -->
  7. <flow name="dataset/request/Login">
  8. <step>
  9. <target><object code="jp.ossc.nimbus.beans.dataset.DataSet"/></target>
  10. <attribute name="Name">LoginRequest</attribute>
  11. <attribute name="HeaderSchema(Authenticate)">
  12. :userId,java.lang.String
  13. :password,java.lang.String
  14. </attribute>
  15. <result><this/></result>
  16. </step>
  17. </flow>
  18. <flows>


アスペクト指向/Interceptor