Graffito是用于构建内容管理应用程式的框架,从他自身的架构设计上来看应该是个单独平台,但事实上该项目复用了大量Jetspeed的模块,并且其表现层为发布到Jetspeed上的几个Portlet应用程式,因此,我在上面的架构图中,将他放在了Jetspeed之上。该项目现在也处在孵育状态下,由于其该项目现在不太活跃,那几个Portlet应用程式都有些小问题。
企业级的门户实现--Jetspeed
产品特性
标准
- 完整兼容Java Portlet API标准1.0(JSR-168)
- 通过JSR-168规范兼容性测试
- 基于JAAS标准的认证和授权服务(默认支持数据库的实现)
- 基于LDAP的用户认证
体系架构
- 基于Spring Framework的组件架构
- 灵活可配置的请求通道(通过Spring Bean XML配置)
- Portlet应用发布单元热部署
- Jetspeed AJAX XML API(基于著名的开源AJAX Framework - DOJO)
- 扩展的Portlet页面结构语言(支持持久化到文档或数据库)
门户核心特性
- 声明风格的安全约束
- 基于角色的Portlet安全面的API
- 门户内容管理和导航,包括页面、菜单、文档夹和超链接
- 单线程或多线程的内容聚合引擎(通过Spring Bean能够轻易转换)
- 高度可扩展的Jetspeed 单点登陆服务框架
- 基于权限和规则的门户页面和资源定位配置
- 支持任何主流的数据库,包括:Derby、MySQL、MS SQL、Postgres、Oracle、DB2、 Hypersonic
- 不依赖客户端类型的capability engine (html, xhtml, wml,vml)
- 多语言支持(12国语言,包括简体中文和繁体中文),而且完全可扩展
- 完整的性能统计日志引擎
- 利用著名开源搜索引擎Lucene提供对任何门户资源的全文本检索和元数据搜索服务
- 用户注册服务和忘记密码的邮件通知服务
- 丰富的登陆密码配置策略
门户管理
- 用户,角色,用户组,密码和Profile管理
- JSR 168协议规范定义的用户属性编辑器
- 门户页面管理
- 单点登陆服务管理
- Portlet应用程式管理
- Profiler管理
- 门户性能统计报告
对Web框架的支持和例子Portlets
- 通过Bridges项目支持几乎任何的主流Web Framework和Jetspeed门户的整合,包括:JSF(Sun的标准JSF实现和Apache MyFaces)、Apache Struts、PHP、Perl、Velocity
- 例子Portlet包括:RSS、IFrame(通过Jetspeed SSO API还能够支持SSO效果)、日历、书签。
- 支持Spring MVC
用户个性化
- 门户页面管理
- 页面用户定制(包括增删查改门户页面,页面的风格,Portlet框体风格,Portlet的位置,Portlet的布局等等)
- 支持两种门户定制风格,包括传统的基于页面刷新的风格和基于AJAX技术的风格
门户设计
- 支持Portlet和Portal页面皮肤的打包发布
- 基于CSS技术的可配置布局
- 支持Velocity模版引擎
门户研发工具
- 支持Maven 1.x和Maven2.0.x,部分功能支持Ant脚本
- 支持通过Maven插件生成自定义门户基础框架
- 热部署Portlet应用发布单元和门户资源
- 支持通过API调用的方式部署Portlet应用发布单元
- 支持Eclipse3.2.x研发环境
应用服务器
- Apache Tomcat 5.0.x
- Apache Tomcat 5.5.x
- IBM WebSphere Application Server 5.1/6.0
- JBoss
- Geronimo 1.0(非官方支持,详见:JS2-444)
架构体系
本节将从Jetspeed和Spring的关系,运行时架构连同Jetspeed service架构这三方面周详介绍Jetspeed的架构体系。
Jetspeed和Spring
Jetspeed架构体系最大特点,也是其高度可订制的根基就是,他选用著名开源POJO框架Spring作为其底层实现。在项目之初, Jetspeed的研发者们也面临着Spring和PicoContainer的抉择,但事实证实当初的选择是正确的,因为随着Spring不断成长完善,Jetspeed的组件架构也跟着收益良多。从另一个角度来看,Jetspeed也能够作为利用Spring构建自己产品架构的经典范例,值得我们考察和学习。
下图简单描述了现在Jetspeed对Spring的依赖关系:
图二 Jetspeed使用到的Spring组件
Beans BeanFactory and the ApplicationContext
Jetspeed主要使用了Spring最核心的IoC引擎BeanFactory和ApplicationContext,管理任何 Jetspeed Components的生命周期和依赖关系,任何这些组件的Spring声明全部定义在名为assembly的文档夹中的XML文档里。假如第三方研发者认为默认的Jetspeed组件不足以满足需要,只要按照自己需求编写Jetspeed Component的Interface的实现类,然后修改Spring Bean XML定义,就能够轻易替换掉默认的实现。例如:
Jetspeed SearchEngine Component Definition
<beans default-lazy-init="false" default-dependency-check="none"
default-autowire="no">
<!--
SEARCH COMPONENT
-->
<bean id="org.apache.jetspeed.search.SearchEngine"
class="org.apache.jetspeed.search.lucene.SearchEngineImpl" abstract="false"
singleton="true" lazy-init="default" autowire="default"
dependency-check="default">
<constructor-arg index="0">
<value>${applicationRoot}/WEB-INF/search_index</value>
</constructor-arg>
<constructor-arg index="1">
<null />
</constructor-arg>
<constructor-arg type="boolean">
<value>true</value>
</constructor-arg>
<constructor-arg>
<ref bean="org.apache.jetspeed.search.HandlerFactory" />
</constructor-arg>
</bean>
</beans>
|
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




