ModuleConfig

下のようにweb.xmlのActionServletのところにconfigFactoryパラメータを指定するのをやめて

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.seasar.struts.servlet.S2ActionServlet</servlet-class>
   :
    <init-param>
      <param-name>configFactory</param-name>
      <param-value>org.seasar.struts.hotdeploy.HotdeployModuleConfigFactory</param-value>
    </init-param>
   :
  </servlet>

HotdeployPlugInっていうのを作って、その中でせっせとHotdeployModuleConfigにラップして設定しなおすようにしてみた。下のような感じで。

    public void init(ActionServlet actionServlet, ModuleConfig config) throws ServletException {
        ServletContext context = actionServlet.getServletContext();
        
        HotdeployModuleConfig hotdeployConfig = new HotdeployModuleConfig(config);
        context.setAttribute(Globals.MODULE_KEY + config.getPrefix(), hotdeployConfig);
        
        ValidatorResources resources = (ValidatorResources) context.getAttribute(ValidatorPlugIn.VALIDATOR_KEY + config.getPrefix());
        HotdeployValidatorResources hotdeployResources = new HotdeployValidatorResources(resources);
        hotdeployResources.setValidationCreator(getValidationCreator());
        context.setAttribute(ValidatorPlugIn.VALIDATOR_KEY + config.getPrefix(), hotdeployResources);
    }

PlugInだからstruts-config.xmlには記述しないといけないけど、HotdeployしたくないときはPlugInをはずすだけでOKとなるからこっちのほうがいいかなーと思ったのでこうしました。