使用WebSphere Portal开发多区域设置网站
2010-09-27 08:17:29 来源:WEB开发网您的业务逻辑还可能涉及到从用户的概要读取首选区域设置。您需要考虑这种可能性,因为您要将门户配置为在处理经过身份验证的请求时不会从用户概要检索首选区域设置。
我们需要对匿名请求和经过身份验证的请求均使用此筛选器,且要在其他门户 Servlet 筛选器前调用。
编辑门户的 web.xml。WebSphere Portal 是运行于 WebSphere Application Server 的 Web 容器中的 Web 应用程序。web.xml 文件位于以下目录中:
<App Server Root>/cells/<cell name>/applications/wps.ear/deployments/wps/wps.war/WEB-INF
将以下 <filter> 和 <filter-mapping> 元素添加到 web.xml 相应的部分中。请确保将该 <filter-mapping> 添加到其他 <filter-mapping> 元素之前,以便先于任何其他门户 Servlet 筛选器调用此筛选器。
清单 5. LocaleServletFilter 的 <filter> 和 <filter-mapping> 元素
<filter>
<filter-name>Locale Filter</filter-name>
<filter-class>com.foo.bar.LocaleServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Locale Filter</filter-name>
<url-pattern>/myportal/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Locale Filter</filter-name>
<url-pattern>/portal/*</url-pattern>
</filter-mapping>
将包含筛选器和请求包装的 jar 文件放入位于类路径中的目录,如 <Portal root>/shared/app 目录。
配置门户
最后,您需要对门户进行配置,以使其不会从用户概要检索首选区域设置。
编辑位于以下目录中的 wmmLDAPServerAttributes.xml 文件:<Portal root>/wmm/
删除 preferredLanguage 的整个 <attributeMap> 元素。
清单 6. 删除以下 <attributeMap> 元素
<attributeMap wmmAttributeName="preferredLanguage"
pluginAttributeName="preferredLanguage"
applicableMemberTypes="Person"
dataType="String"
valueLength="128"
multiValued="false"/>
进行此更改将强制 WebSphere Portal 使用在请求 Header 中设置的区域设置作为请求的区域设置。
重要:在集群环境中,您需要修改部署管理器的 wmmLDAPServerAttributes.xml 副本(通常位于 <Deployment Manager root>/config/wmm 目录中),然后与所有集群成员同步这些更改。
结束语
在本文中,您了解了 WebSphere Portal 用于确定请求的区域设置的算法。然后,您了解了如何使用 Servlet 筛选器来基于业务规则确定区域设置。您使用了请求包装来在 Accept-Language 请求 Header 中设置此区域设置。最后,您强制 WebSphere Portal 对经过身份验证的请求使用请求 Header 中的区域设置。
编缉推荐阅读以下文章
- 扩展WebSphere Portal V6个性化功能
更多精彩
赞助商链接