由上面的两个文档,我们能够清楚地看出UserManager是定义security-managers.xml文档中的,但是为了能够在portlet服务中引用他,还必须在jetspeed- services.xml中再次引用他的bean name,org.apache.jetspeed.services.JetspeedPortletServices封装了一个Map数据结构, Map中存放的就是服务名称和该服务POJO对象引用,这一切便利都是由Spring带来的。
下面是在Portlet的代码中使用该服务的例子:
protected UserManager userManager = null;
public void init(PortletConfig config) throws PortletException {
super.init(config);
userManager = (UserManager)
getPortletContext().getAttribute(CommonPortletServices.
CPS_USER_MANAGER_COMPONENT);
if (null == userManager) {
throw new PortletException("Failed to find the User Manager
on portlet initialization");
}
}
|
Jetspeed鼓励Portlet研发者在研发过程中,将公共的Service用Spring Bean的方式封装起来,然后添加到Jetspeed-services中,这样就能够在Portlet代码中轻松复用这些公共Service了,并且还能够利用Spring来管理这些Service的生命周期。事实上,Jetspeed自带管理界面Portlet应用程式就大量采用了这种技术。
更有一个需要注意的问题是,用户自定义的Service必须放到Tomcat的shared\lib下面去,以确保JAVA Classloader能够找到他。
Jetspeed核心组件简介
介绍了那么多Jetspeed架构方面的信息,下面我们一起来快速浏览一下Jetspeed Portal的核心组件。
Jetspeed-Api
路径:components/jetspeed-api
定义几乎任何的jetspeed-api interfaces,一般的研发者都使用这个组件中定义的接口进行二次研发。
Component Manager
路径:components/cm
Jetspeed组件管理器,通过接口org.apache.jetspeed.components.ComponentManager屏蔽了Spring的实现细节。能够通过实现该接口替换Spring。
Deploy-Tool
路径:components/deploy-tool
当Web Container为Tomcat时,通过该组件,读取已打包好的portlet应用程式中的portlet.xml和web.xml,检查是否包含JetspeedContainerServlet的定义,假如没有则修改web.xml加入这部分信息。
Id-Generator
路径:components/id-generator
用于生成全局唯一的portlet实例id。
Locator
路径:components/locator
提供定位门户资源的服务,资源包括:模板,Profiler等。
Page-Manager
路径:components/page-manager
对著名的门户结构描述文档-PSML(Portal Structure Markup Language),提供了Java对象模型映射,并且支持文本风格的PSML和数据库风格的PSML,连同PSML管理器。
Portal
路径:components/portal
实现绝大部分的jetspeed-api组件中定义的interface,是最核心的组件。
Preferences
路径:components/prefs
实现了Portlet属性偏好功能,提供将这些属性持久化到数据库的服务。
RDBMS
路径:components/rdbms
Jetspeed中任何和Apache OJB O/R Mapping框架有关的组建的基础组件。
Search
路径:components/search
提供整个门户资源的全文本搜索服务,具体实现依赖于Apache Lucene。
Security
路径:components/security
提供基于标准JAAS的认证服务,支持数据库和LDAP作为认证信息仓库。基于角色的授权服务,默认支持数据库作为权限仓库。
Single Sign-on
路径:components/sso
提供一个可扩展的单点登陆服务接口和一个简单的基于JAAS Subject的实现,该组件主要提供Portal门户和后台应用之间的单点登陆功能。
Statistics
路径:components/statistics
提供一个简单的访问请求统计服务的实现,支持将统计信息持久化到数据库。在Jetspeed-2管理界面中,还提供了专门的Portlet浏览这些统计信息。
总结
本文带读者浏览了Apache Portal项目组的任何成员,并着重介绍了Apache Jetspeed-2 Portal。希望能够使不了解门户技术的朋友对他有一个初步的认识,找到自己感兴趣的方向,继续深入研究;同时对那些试图在项目中使用开源软件的研发者,提供一些能够借鉴的信息。纵观现在开源软件中的门户实现,还没有哪一个社区能够提供像Apache Portal项目组这样完整的解决方案同时,还拥有如此友好的许可策略。只要去深入了解,开源软件往往能够给人们带来意外的惊喜。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




