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となるからこっちのほうがいいかなーと思ったのでこうしました。