使用JA-SIG uPortal开发门户应用

时间:2021-09-03 04:05:19
本文介绍了uPortal,一种开放源码的Java,XML,XSL 门户架构的优点和使用。本文假定读者没有uPortal的经验,涉及了两种版本快速开始和源码版。作者Brad Rippe介绍了快速版随带的java数据库HypersonicSQL,以及如何迁移到大型数据库如Microsoft SQL Server。最后,文章详细介绍了框架内嵌的权限验证机制。
Java in Administration Special Interest Group (JA-SIG)的一组java开发者构建了uPortal,欢迎所有的java爱好者加入这个项目。

随着组织的成长,我们常常会发现我们不断在寻找新的途径来将新的变化,过程和政策告诉员工。我们希望雇员和行政机构能够在公司的目标,计划,事务下有机的组织起来。更进一步,我们想将尽可能丰富而不局限于某一方面的信息呈现给雇员。用Internet来展示信息看起来是个好的开始,但我们的受众能够从网上浩瀚的信息过滤出想要的部分么?
在教育领域,我们也面临同样的挑战。怎样使很好地使管理层,分布,员工,学生能够对机构政策,过程很好的理解?怎样保证使学生群体接收到清晰,最新的信息来帮助他们实现各自的学习和职业目标。另外,我们希望建立学生,教师,行政,分部和职员协同交流的"社区"为学生很好实现目标提供保证。我们也希望增进信息共享时用户能分享群体的经验。同时,我们想实现新旧应用的无缝集成。
一种解决方案是提供一种支持工具能够根据用户的个人资料,兴趣和专业来提供有价值的信息。但是,开发这种工具并不简单,尤其是你得考虑耗费和资源。
一种好的方法是寻找已有的portals,不过如果客户化又是很麻烦的事情,也许你可以看看Java in Administration Special Interest Group (JA-SIG)开发的uPortal,uPortal是开放源码,基于的Java, XML, and XSL项目。目前的发行版包括WEB服务频道,权限,用户组管理等等。UPortal让你可以自己增加你的机构需要的新特性。它着眼于高等教育机构,一些商业组织也用它来作为构建协同社区的框架。这种框架包括插入式的被成为频道的组件,它提供用户感兴趣的信息。用户可以根据其在机构中角色选择关心的频道,同时还可以定制自己站点喜欢的样式。
Uportal是免费的,但是开发组学习java,XML,XSL和门户框架是需要投入的。本文试图通过帮助你将uPortal运行起来以减少这种投入。而且,本文还介绍了如何将uPortal培植成产品数据库和她的基本认证方法。
快速版
为了运行uPortal,首先你得去JA-SIG Website下载一个版本。你可以选择快速版和源码版。注意你需要有jdk13或以上的java版本
快速版面向没有部署门户产品环境的用户。这个版本让用户下载一个包括java数据库(HypersonicSQL),servlet容器(Apache Tomcat),构造工具(Apache Ant),uPortal源码和配置文件。快速版让你很快把uPortal运行起来。
要运行这个版本,你只须解开压缩文件到指定目录。为便于说明,我使用我的安装目录c:/uportal_2-1/.,我们可以看到Ant,HypersonicSQL,Tomcat,uPortal的子目录
Ant:Apache组织的基于的构建工具。Ant工具由一系列的Ant任务组成,任务可以是调用java编译器生成class文件,也可以是修改配置文件用于测试或产品环境,还可以是调用javadoc生成文档,运行单元测试等等。UPortal使用Ant来启动和终止WEB容器,生成文档,创建库表,增加用户和样式单。

HypersonicSQL:一种开放源码的java数据库,uPortal用来创建表存数据。尽管HypersonicSQL是免费的,但更多的产品开发环境使用Oracle, MySQL, 或 Microsoft SQL Server数据库产品。当然,HypersonicSQL非常的简单,用来做内部的uPortal演示仍然时候不错的选择。
Tomcat:容纳所有uPortal's servlets 和 JSP页面。Apache Tomcat是Sun Microsystems的WEB应用规范的参考实现,Tomcat支持Servlet 2.3 specification 和 JSP 1.2.
现在让这个站点运行起来,首先我们需要用ant从命令行启动数据库,进入uPortal的安装目录敲下ant hsql.,
C:/uPortal_2-1>ant hsql
C:/uPortal_2-1/Ant_1-5
Buildfile: build.xml

hsql:
[echo] Starting HSQL
[java] Server 1.6 is running
[java] Press [Ctrl]+[C] to abort


数据库可用后,你使用以下命令,来启动Tomcat访问你的uPortal
C:/uPortal_2-1>ant tomcatstart
现在数据库和应用服务器都运行起来了,你可通过url:http://localhost:8080/uPortal/ 访问,默认情况下你可使用这些帐号登录进uPortal访问不同的界面和频道。
Portal默认的帐号
Default portal usersUsername Password 

demo demo 
student student 
faculty faculty 
staff staff 
developer developer 


源码发行版
uPortal的第二个发行版是面向那些有J2 EE和产品数据库环境的。这个版本只包括uPortal代码和编译代码,创建数据库表,生成文档的配置文件。建议用户要有java应用服务器和关系数据库的经验。这个版本需要用户自己配置运行环境。

UPortal随带一个仅有100KB的java数据库叫HypersonicSQL。这个关系数据库系统易于使用并且是免费的。HypersonicSQL支持索引,事务,连接,参照约束,java存储过程和函数,以及用户安全。数据库还包括一个类似Microsoft's SQL Analyzer的数据库管理器,但是HypersonicSQL是正在开发中的数据库,建议基于uPortal的方案用产品数据库后台部署,由于绝大多数的机构都有可用的数据库,uPortal也提供对其它数据库的简单接口。

迁移到产品数据库

现在你已经使用了uPortal并且了解一些特性,你也许希望将数据转移到更稳定的数据库中去,uPortal的 org.jasig.portal.RDBMServices 类提供了数据库服务,最初版本的使用一种开放源码对象池PoolMan,现在的版本使用RDBMServices,提供的连接池是驱动器实现的,可以通过配置使用你自己的产品数据库
Listing 1 


jdbcDriver=org.hsqldb.jdbcDriver
jdbcUrl=jdbc:hsqldb:hsql://localhost:8887
jdbcUser=sa
jdbcPassword=


My configuration resembles: 
我的配置是:
Listing 2 


jdbcDriver=com.inet.tds.TdsDriver
jdbcUrl=jdbc:inetdae7:localhost:1433
jdbcUser=PortalUser
jdbcPassword=


我的配置包括两个数据库。分别存放uPortal主表和uPortal频道表。所有的频道连接uportal_channels库,uPortal框架连到uportal的存取显示,权限信息和其他相关信息
除了在rdbm.properties增加属性外,因为我们使用第三方JDBC驱动程序,所以需要将jar文件放到uPortal's 库目录并修改uPortal_rel-2-1-1 目录下build.properties文件。
jdbcDriver.jar=./lib/[yourJDBCDriver].jar

用以下命令使配置生效

c:/uportal_2-1/ uPortal_rel-2-1-1/ant deploy

用以下命令测试:
C:/uPortal_2-1-1/uPortal_rel-2-1-1>ant dbtest

连接定义好后,你可通过以下命令创建表结构:

c:/uportal_2-1/uPortal_rel-2-1-1/ant db

该命令启动uPortal数据库载入器,它将创建uPortal运行需要的所有表,数据库载入器使用以下xml中的定义创建表结构:

data.xml:包括需要插入表中的数据一旦表创建好后,包括所有的频道,拥护和界面样式信息
dbloader.xml:dbloader的配置信息。是否删除所有表,创建新表,或修改数据库数据

tables.xml:存放数据库结构
到这里,你应该可以得到跟你用快速版一样的uPortal效果了。但是,现在uPortal应该连接你的数据库后端而不是用它自带的HypersonicSQL。

内嵌认证机制
uPortal数据库提供了基本认证方法。用户名和密码在UP_PERSON_DIR表存取。密码使用MD5加密。尽管很多环境使用其他如LDAP或NT ACLs来做用户验证,uPortal提供了用户和权限的基本结构。在uPortal中创建用户,你必须使用另一个叫md5passwd 的Ant任务。在命令行下敲入

ant md5passwd -Dusername=brippe


你将看到提示输入密码。任务加密密码并将用户信息放入UP_PERSON_DIR,这时,用户可以登陆进uPortal,uPortal使用UP_PERSON_DIR验证用户。我手上版本的uPortal使用md5passwd加密ANT任务时有点问题。相关的class路径包括xercesImp.jar 和 xml-apis.jar,我通过如下修改纠正了错误。

<classpath>
<pathelement path="${build.home}"/>
<pathelement path="${build.home}/WEB-INF/classes"/>
<pathelement path="${jdbcDriver.jar}"/>
<pathelement path="${log4j.jar}"/>
<pathelement path="${xercesImpl.jar}"/>
<pathelement path="${xml-apis.jar}"/>
</classpath>


Xerces jar包含着Xerces XML解释器,xml-apis.jar是的XML的javaAPIs,里边包括java1。4的SAX,DOM和其他XMLAPI。
顺便说明,一旦用户登录进uPortal,显示信息被放在UP_USER表中。这个表存放用户看到哪一种界面。

开始你的uPortal开发
Uportal提供了扩展基础使你的开发不会从很细节的地方开始。整个框架还集成了其它没有在这里讨论的功能:uPortal支持审计,WEB服务,用户管理等等。UPortal最好特性是它的开发架构允许快速创建新的频道和分布世界的频道开发协作关系。可用的频道包括聊天,论坛,教学,天气,记事本,通告,问答,分类广告等等。虽然软件是教育机构的协同努力开发的,但用于构建其它门户环境也是非常可行的