[Seasar-user:6714] Re: [S2Struts]ログインやロール認証の方法のご確認・・・

田中 修 [E-MAIL ADDRESS DELETED]
2007年 3月 16日 (金) 15:07:34 JST


たびたびすみません。
田中 修です。

S2TilesRequestProcessorを継承して使おうとすると
[INFO ] 2007-03-16 14:17:12,247 (org.apache.struts.tiles.TilesPlugin:236) - Tiles definition factory loaded for module ''.
[INFO ] 2007-03-16 14:17:12,732 (org.displaytag.filter.ResponseOverrideFilter:108) - Filter initialized. Response buffering is enabled
[FATAL] 2007-03-16 14:17:12,888 (org.apache.struts.tiles.TilesPlugin:370) - TilesPlugin : Specified RequestProcessor not compatible with TilesRequestProcessor
[ERROR] 2007-03-16 14:17:12,888 (org.apache.struts.action.ActionServlet:364) - Unable to initialize Struts ActionServlet due to an unexpected exception or error thrown, so marking the servlet as unavailable.  Most likely, this is due to an incorrect or missing library dependency.
javax.servlet.ServletException: TilesPlugin : Specified RequestProcessor not compatible with TilesRequestProcessor
	at org.apache.struts.tiles.TilesPlugin.initRequestProcessorClass(TilesPlugin.java:372)
	at org.apache.struts.tiles.TilesPlugin.init(TilesPlugin.java:133)
	at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
	at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
[INFO ] 2007-03-16 14:17:12,888 (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/XXXX]:646) - サーブレット action を利用不可能にマークします

どうやらエラーになるようです。
継承はしてはいけないということでしょうか?
それともS2Strutsの設定が間違えているのでしょうか?

環境は
s2-framework-2.4.11
s2-extension-2.4.11
s2-dao-1.0.41-RC1
s2-struts-1.3.0-bata-1

設定ファイルは
app.dicon
<include path="s2struts.dicon"/>
<include path="xx/webapps/dicon/multiply.dicon" />

multiply.dicon
<components>
    <include path="xx/dicon/a.dicon" />
    <include path="xx/dicon/b.dicon" />
    <component
        class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
        <initMethod name="addReferenceClass">
            <arg>@[E-MAIL ADDRESS DELETED]</arg>
        </initMethod>
        <initMethod name="addClassPattern">
            <arg>"c.dao"</arg>
            <arg>".*Dao"</arg>
        </initMethod>
        <initMethod name="registerAll"/>
    </component>
    <component
        class="org.seasar.framework.container.autoregister.AspectAutoRegister">
        <property name="interceptor">dao.interceptor</property>
        <initMethod name="addClassPattern">
            <arg>"c.dao"</arg>
            <arg>".*Dao"</arg>
        </initMethod>
    </component>
  <component name="traceInterceptor"
		class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
  <component
	class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
	<property name="autoNaming">
		<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
	</property>
	<initMethod name="addClassPattern">
		<arg>"xx.webapps"</arg>
		<arg>".*ServiceImpl"</arg>
	</initMethod>
  </component>
   <component
	class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
	<property name="instanceDef">
		@[E-MAIL ADDRESS DELETED]
	</property>
	<property name="autoNaming">
		<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
	</property>
	<initMethod name="addClassPattern">
		<arg>"xx.webapps"</arg>
		<arg>".*Action"</arg>
	</initMethod>
  </component>
  <component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
	<property name="interceptor">traceInterceptor</property>
	<initMethod name="addClassPattern">
		<arg>"xx.webapps"</arg>
		<arg>".*Action"</arg>
	</initMethod>
  </component>
	
</components>
   
web.xmlへの追加および変更
<filter>
	<filter-name>s2filter</filter-name>
	<filter-class>
		org.seasar.framework.container.filter.S2ContainerFilter
	</filter-class>
</filter>
<filter>
	<filter-name>s2strutsfilter</filter-name>
	<filter-class>org.seasar.struts.pojo.filter.S2StrutsFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>s2filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
	<filter-name>s2strutsfilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
	<servlet-name>s2container</servlet-name>
	<servlet-class>
		org.seasar.framework.container.servlet.S2ContainerServlet
	</servlet-class>
	<init-param>
        <param-name>configPath</param-name>
        <param-value>xx/webapps/dicon/app.dicon</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>s2container</servlet-name>
	<url-pattern>/s2container</url-pattern>
</servlet-mapping>

struts-config.xmlモジュール化にて複数ファイル
<controller
        processorClass="aaa.util.S2TilesLoginRolesRequestProcessor" />

index.doをコールするaction
        <action path="/index" parameter="tiles://index"
            roles="roles1,roles2" scope="request"
            type="org.apache.struts.actions.ForwardAction" validate="false" />
その他のaction
        <action path="/switch" roles="roles1,roles2"
            type="org.apache.struts.actions.SwitchAction" />
        <action path="/srch" input="tiles://index" name="IndexForm"
            parameter="executeSearch" roles="roles1,roles2"
            type="xx.webapps.mstr.action_form.SrchAction"
            scope="request" validate="false">

継承が駄目なのか
設定が駄目なのか
分かる方いらっしゃいましたらご教授お願いします。

> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]]On Behalf Of 田中 修
> Sent: Friday, March 16, 2007 11:04 AM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:6712][S2Struts]ログインやロール認証の方法のご確
> 認・・・
> 
> 
> 田中 修です。
> 
> 企業で使用可能か
> S2Strutsの検証を始めているのですが
> ログイン制御やロール認証を
> 今まででしたら
> RequestProcessorやTilesRequestProcessorを継承して作成していました。
> おなじように
> S2Strutsでも
> S2RequestProcessorやS2TilesRequestProcessorを継承してメソッドを追加する
> のが
> 一般的でしょうか?
> 
> こんな素晴らしい方法がありますよという情報がありましたら
> お教えお願いします。
> 
> 現在、使用しているメソッドは
> processActionPerformはメンテナンス時間制御
> processRolesは常にtrue
> processForwardはログイン、ロール認証
> というような形でメソッドを継承しています。
> 
> クラスを3つ作ってASPECTする方がよいでしょうか?
> どちらにすべきか悩んでおります・・
> アドバイスがありましたらお知らせお願いします。
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



Seasar-user メーリングリストの案内