ComposableRequestProcessor

今度リリースするS2Struts1.3.0-beta3からStruts1.3対応となります。
そしてStruts1.3が提供するComposableRequestProcessorを利用してS2と連携できるようになります。
(S2RequestProcessorを利用したS2との連携も従来どおりできます)


ComposableRequestProcessorでS2と連携をするためには、、、やっぱり設定が必要になります。


まずは、web.xmlでActionServletを定義するときにS2Struts用のchain-config(s2struts-chain-config.xml)とStrutsが提供するchain-config.xmlを指定します。

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    ...
    <init-param>
      <param-name>chainConfig</param-name>
      <param-value>s2struts-chain-config.xml, org/apache/struts/chain/chain-config.xml</param-value>
    </init-param>
    ...
  </servlet>

次にstruts-config.xmlの設定です。
デフォルトでComposableRequestProcessorを利用することになっているのでprocessorClassの指定は不要ですが、処理の流れを定義しているcatalogの名前はs2strutsと変えているので、以下のようにcatalogを指定します。

<struts-config>
  ...
  <controller catalog="s2struts"/>
  ...
</struts-config>

ちなみに、、、従来の下のようなS2RequestProcessorを利用する指定は不要になります。

<struts-config>
  ...
  <controller
     processorClass="org.seasar.struts.processor.S2RequestProcessor"/>
  ...
</struts-config>


これでComposableRequestProcessorを利用してS2と連携することができるようになります。
あと、Tilesを利用する場合はweb.xmlでTilesのchain-config.xmlを利用するように変更すればOKです。

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    ...
    <init-param>
      <param-name>chainConfig</param-name>
      <param-value>s2struts-chain-config.xml, org/apache/struts/tiles/chain-config.xml</param-value>
    </init-param>
    ...
  </servlet>

[追記]2007/02/14

HOT deployの環境でComposableRequestProcessorを利用する場合は、web.xmlのHotdeployFilterの後にS2StrutsHotdeployFilterを追加する必要があります。

  <filter>
    <filter-name>hotdeployfilter</filter-name>
    <filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
  </filter>

  <filter>
    <filter-name>s2strutshotdeployfilter</filter-name>
    <filter-class>org.seasar.struts.hotdeploy.filter.S2StrutsHotdeployFilter</filter-class>
  </filter>

    :
    :

  <filter-mapping>
    <filter-name>hotdeployfilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

  <filter-mapping>
    <filter-name>s2strutshotdeployfilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>