Tapestry4.0和Acegi的集成注意事项:
1,由于 Acegi 是建立在 Spring 基础上的, 所以系统必须支持 Spring。
2,配置hivemodule.xml及web.xml.实现frindsurl。配置如下:
hivemodule.xml:
<contribution configuration-id="tapestry.url.ServiceEncoders">
<direct-service-encoder id="direct" stateless-extension="direct" stateful-extension="sdirect"/>
<page-service-encoder id="page" extension="html" service="page"/>
<page-service-encoder id="external" extension="external" service="external"/>
<asset-encoder id="asset" path="/assets"/>
<extension-encoder id="ext" extension="svc" after="*"/>
</contribution>
web.xml:
<filter>
<filter-name>Acegi Filter Chain Proxy</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Acegi Filter Chain Proxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>youservletname</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>youservletname</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>youservletname</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>youservletname</servlet-name>
<url-pattern>*.direct</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>youservletname</servlet-name>
<url-pattern>*.sdirect</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>youservletname</servlet-name>
<url-pattern>/assets/*</url-pattern>
</servlet-mapping>
3,配置application-context-acegi.xml:
可参考:http://forum.springframework.org/showthread.php?t=24013&highlight=acegi+tapestry
注:本文是本人通过参考这个文章总结出来的经验之谈。