本当のHOT deploy化
昨日の続きで、ここからが本当の作業だけど、、、
employeeの部分だけHOT deploy化します。
http://d.hatena.ne.jp/nobeans/20060630
をみながらs2container.diconに中身をつけていったんだけど、、、下の書き方はダメみたいだけど、とりあえず現状動くはずということで。たぶん、s2がbeta-4になったら書き方はかわるはずだし。
<components> <include path="aop.dicon"/> <include path="j2ee.dicon"/> <include path="dao.dicon"/> <component class="org.seasar.framework.container.hotdeploy.OndemandBehavior"> <property name="rootPackageName">"org.seasar.struts.examples.employee"</property> <initMethod name="addCreator"> <arg> <component class="org.seasar.framework.container.hotdeploy.creator.InterfaceCentricSinglePackageCreator"> <property name="middlePackageName">"action"</property> <property name="nameSuffix">"Action"</property> <property name="instanceDef">@org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST</property> <initMethod name="addCustomizer" ><arg>actionAspectCustomizer</arg></initMethod> </component> </arg> </initMethod> <initMethod name="addCreator"> <arg> <component class="org.seasar.framework.container.hotdeploy.creator.DtoCreator"/> </arg> </initMethod> <initMethod name="addCreator"> <arg> <component class="org.seasar.framework.container.hotdeploy.creator.LogicCreator"> <initMethod name="addCustomizer" ><arg>logicAspectCustomizer</arg></initMethod> </component> </arg> </initMethod> <initMethod name="addCreator"> <arg> <component class="org.seasar.framework.container.hotdeploy.creator.DaoCreator"> <initMethod name="addCustomizer" ><arg>daoAspectCustomizer</arg></initMethod> </component> </arg> </initMethod> </component> <component name="actionInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain"> <initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod> </component> <component name="actionAspectCustomizer" class="org.seasar.framework.container.autoregister.AspectCustomizer"> <property name="interceptor">actionInterceptorChain</property> </component> <component name="logicInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain"> <initMethod name="add"><arg>aop.traceThrowsInterceptor</arg></initMethod> <initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod> <initMethod name="add"><arg>j2ee.requiredTx</arg></initMethod> </component> <component name="logicAspectCustomizer" class="org.seasar.framework.container.autoregister.AspectCustomizer"> <property name="interceptor">logicInterceptorChain</property> </component> <component name="daoInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain"> <initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod> <initMethod name="add"><arg>dao.interceptor</arg></initMethod> </component> <component name="daoAspectCustomizer" class="org.seasar.framework.container.autoregister.AspectCustomizer"> <property name="interceptor">daoInterceptorChain</property> </component> </components>
にしてapp.diconにemployee.diconをincludeするのをやめる
<components> <include path="s2struts-hotdeploy.dicon"/> <include path="s2struts.dicon"/> : : <!-- <include path="org/seasar/struts/examples/dicon/employee.dicon"/> --> </components>
これでHOT deploy化終了。後は動作確認のみ!!
ってことだけど、、、動かない。。。。
問題点は
- 〜InitActionが見つからないときがある
- HttpSessionに格納している値をActionにセットできていない
の2点がわかった。
「〜InitActionが見つからないときがある」これが不思議。。。
直接HTMLを指定する場合は、きちんと見つかるのにActionを経由する(ActionからForwardする)場合は「コンポーネント(employeeEditInitAction)が見つかりません」ってエラーになってしまう。。。
もうちょっと調べてみよう。
「HttpSessionに格納している値をActionにセットできていない」これはS2StrutsでActionにセットしてるんだけど、これもうまくいかなくなった。。。これもきちんと調べないといけないけど、ClassLoaderが違ったりしてisInstance()とかでダメになったりするのかな。。。うーむ。。。
動作してるのと動作していないのを確認しよう。