最近到了portal的开源项目jetspeed网页中去看了下他的介绍,顺便记下了这些jetspeed的学习资料,
Jetspeed初识
学习Jetspeed要求初学者了解Apache Maven项目管理工具以及Apache Ant打包脚本工具。
项目需要如下配置:
Ant1.5或者更改版本
Maven1.0.2或者更高
Java1.4.2_02或者更高
Servlet2.4的工作引擎:
Tomcat5.5.x
Jetty
Websphere6.0
Geronimo
JBoss
Weblogic
获取Maven
需要在
http://maven.apache.org/网站获取相应版本的maven
选择数据库
Jetspeed的安全模式要求数据库授权给用户来获取用户的基本信息。这个安全模式要求要求JDBC2.0及以上版本的驱动才能运行。以下的数据库经测试均可以使用:
Derby
HSQLDB-Hypersonic SQL
MySQL
Oracle
Postgres
DB2
Sybase
SQL Server
Jetspeed项目缺省的部署数据库配置为Derby。数据库的选择将在Jetspeed的安装过程中确定。如果你不想用Derby数据库,在安装过程中你可以选择其他数据库。
Servlet引擎
理论上,Jetspeed二代portals能够运行在任何支持servlet2.4规范的servlet容器中。已经成功部署过Jetspeed二代portal应用程序的servlet引擎有如下几种:
Tomcat5.5.8或者更高
Jetty
Websphere
Geronimo
JBoss
Tomcat
配置过程
Jetspeed2可以用Tomcat应用程序管理者来管理portlet应用程序,为了能够做到这一点,需要Tomcat管理者身份的用户在${org.apache.jetspeed.server.home}/conf/tomcat-users.xml文件中进行配置。
参考示例tomcat-user.xml
<tomcat-users>
<role rolename=”manager” />
<user username=”j2deployer” password=”xxxxxx” roles=”manager” />
</tomcat-user>
Username与password的属性值必须符合${org.apache.jetspeed.services.autodeployment.user}以及${org.apache.jetspeed.services.autodeployment.user}中表述的指定值。
Windows Tomcat5.5.9
的部署
为了正确的重新部署以及卸载,在Windows Tomcat5.5.9中,你需要设定全局的Context属性”antiJARLocking”为true
参考
${org.apache.jetspeed.server.home}/conf/context.xml
的配置如下:
<Context antiJARLocking="true">
...
</Context>
Jetty-
一个快速测试环境与产品的Servlet
容器
Jetty用于一个产品的部署,但它更常用于快速测试客户化,而它本身又没有妨碍产品的servlet容器。它不需要任何特殊的配置。
从源代码或者安装文件来安装Jetspeed
你需要选择一种类型来安装Jetspeed,要么是安装文件,要么是附带有源代码的文件,这依赖与你想要做什么。如果你修改Jetspeed的核心功能或者捐赠Jetspeed的开发项目,你将需要源代码文件。如果你仅仅是用它来建立你自己的个性化企业级portal,你可以选择二进制的发版的Jetspeed。大多数人选择安装文件。
Jetspeed的构建
你的安装说明将依赖于你是否选择源代码文件或者安装文件或者二进制的文件
Jetspeed-2
的源码学习
1.
命名习惯与基本规范
源码基本规范
除非有特殊说明,你应当从Jetspeed目录中或者从你的个人portal文件中运行所有的maven构建命令。
另外,在*nix或者windows系统中,你必须以”/”作为文件的分隔符。例如:c:/windows,/home
命名习惯
以下是本文档中一个常用的命名习惯列表。
变量用${some_variable}来表示。这就代表着在Jetspeed中的一种设定或者说在你的环境中的一种表示。属性文件则详细的说明了这些变量的意思。
例如,
${org.apache.jetspeed.server.home}变量要么表示在一个属性文件中更加定义好的属性或者在构建过程中定义好的变量名,要么表示Jetspeed中其他的构建文件定义好的变量名。
${USER_HOME}:表示用户的根目录,在Windows中,这表示c:/Documents and Settins/${username},${username}表示你用来登陆Windows的名字。
${USER.HOME}在本文中与${USER_HOME}表示同一个意思。
${CATALINA_HOME}:这是你的tomcat安装的路径。例如:c:/tomcat.
源代码管理(SVN)
Subversion(SVN)在Jetspeed项目中用于管理源代码文件。SVN与CVS类似。对于那些Windows系统而喜欢非命令行的操作用户来说,我们推荐用TortoiseSVN,它可以插件化到你的Windows浏览器当中,而对于那些用EclipseIDE的用户来说,Subclipse插件可以用于SVN。
Maven的安装
在这篇文档中,我们不会讨论Maven的细节。然而,有些标准的maven行话我们感觉有必要让你了解些。
在这篇文档中,当你安装Maven时,maven/目录将被创建在你的${USRE_HOME}目录中,你将看到maven知识库中的提及的一些内容。
在maven/目录中,你将看到一个repository目录,这个目录是当你运行你的构建文件命令时,Maven用来来存储所有下载的jar文件的。它也是Maven放置你的jar文件和war文件的地方。他们将按照目录式的结构存储起来,格式化为:jar文件是${groupId}/${projected}/jars/${projected}-${version}.jar,而war文件是${groupId}/${projectId}/wars/${projectId}.war。其中${groupId},${projectId}以及${version}变量将在这篇文件的后面讨论。Jar文件与war文件也会在你的工程项目/target目录中创建。
2.Jetspeed
构建与maven-plugin
的属性
期初,你需要设定几个属性:
用Jetspeed2提供的maven-plugin你可以轻松的创建你自己的portal。它也用于你从源代码构建jetspeed项目时。事实上,jetspeed-2构建过程就是一个个性的portal配置和安装过程。
Jetspeed-2的maven-plugin为大多数的属性定义了缺省的值。当你下载或者校验jetspeed-2的源码树时,在根文件中,你将看到它包含了一个工程的属性文件。
不过,有言在先:并不是所有的属性都提供了一个缺省的值,你必须自己指定一些属性的缺省值,当然你也将重新指定一些其他属性的值。
看一看如下说明,在你的${USER_HOME}/build.properties文件设定或者重设构建的或者maven-plugin的属性。
必须设定的portal属性有:
属性
|
描述
|
缺省值
|
org.apache.jetspeed.portal.home
|
maven-plugin创建或者更新你的portal maven项目结构的文件夹(with goal j2:portal.conf.project ).它将是你进行性所有portal开发的地方
例如: /home/myportal/ |
不缺省
|
org.apache.jetspeed.portal.groupId
|
你的portal项目组的简称。这个值用作maven库文件夹存储的位置标识。
例如: myprojects |
不缺省
|
org.apache.jetspeed.portal.artifactId
|
你的portal项目的简称,这个值用作portal war文件的web应用上下文名称。
例如: myportal |
不缺省
|
org.apache.jetspeed.portal.name
|
Portal项目的全名.
这个值用于产生JavaDoc的标题名称. 例如: My Test Portal |
不缺省
|
org.apache.jetspeed.portal.currentVersion
|
你的portal项目的当前版本.
这个值用在maven生成的文件名的后缀. 例如: 1.0 |
不缺省
|
可选的portal
配置属性
下面的属性全是${org.apache.jetspeed.portal.home}所指定的一些子文件夹,基本定义如下:
属性
|
描述
|
缺省值
|
org.apache.jetspeed.portal.conf.dir
|
The folder where the maven-plugin will generate and copy application server specific configuration files as a tomcat application context descriptor.
This folder and its contents is created or updated by plugin goal j2:portal.conf.tomcat . |
target/portal-conf
|
org.apache.jetspeed.portal.sql.dir
|
The folder where the maven-plugin will generate and copy portal and database server specific sql DDL and DML scripts.
This folder and its contents is always (re)created by plugin goal j2:portal.conf.sql . |
target/portal-sql
|
org.apache.jetspeed.portal.db.dir
|
The folder where the maven-plugin will create its build-in HSQLDB database(s).
This folder and its contents is created or updated by plugin goal j2:start.production.server or j2:start.test.server . |
target/portal-db
|
org.apache.jetspeed.portal.webapp.dir
|
The folder where the maven-plugin will copy the standard jetspeed web application resources.
This folder and its contents is created or updated by plugin goal j2:portal.copy.webapp . |
target/${org.apache.jetspeed.portal.artifactId}
|
org.apache.jetspeed.portal.target.dir
|
The folder where the maven-plugin will generate and copy runtime portal configuration files.
These configuration files contain values derived from build/plugin properties for the portal and OJB. This folder and its contents is created or updated by plugin goal j2:portal.conf.jetspeed and goal j2:portal.conf.ojb . |
target/${org.apache.jetspeed.portal.artifactId}
|
必须的应用程序服务器的属性
注意:maven-plugin
现在只支持Tomcat
服务器5.0.x
或者5.5.x
。
属性
|
描述
|
缺省值
|
org.apache.jetspeed.server.home
|
The root folder of your Tomcat server installation.
Example: ${CATALINA_HOME}/ .
|
不缺省
|
org.apache.jetspeed.server.shared
|
The location of the shared jars in your Tomcat installation.
Example: ${org.apache.jetspeed.server.home}/shared/lib/ |
不缺省
|
org.apache.jetspeed.deploy.war.dir
|
The location of web applications in your Tomcat installation.
Example: ${org.apache.jetspeed.server.home}/webapps/ |
不缺省
|
org.apache.jetspeed.services.autodeployment.user
|
A Tomcat user with the manager role.
Used to access the Tomcat Manager application from within the portal, explained below. |
不缺省
|
org.apache.jetspeed.services.autodeployment.password
|
The password of the Tomcat user above.
Used to access the Tomcat Manager application from within the portal, explained below. |
不缺省
|
org.apache.jetspeed.catalina.version.major
|
The major version of the Tomcat server you are using: 5 or 5.5
Example: 5.5 |
不缺省
|
可选的数据库服务器的属性
Jetspeed-2以及它的maven-plugin提供的和用的缺省数据库是HSQLDB,如果你想用一个不同的数据库的话,你需要覆盖如下属性;
属性
|
描述
|
缺省值
|
org.apache.jetspeed.production.database.default.name
|
The type of database you are using. Used for sql script generation with Torque.
Currently supported databases (with corresponding Torque target database name):
· hsql (hypersonic)
· oracle (oracle)
· mysql (mysql)
· postgres (postresql)
· mssql (mssql)
|
hsql
|
org.apache.jetspeed.production.database.url
|
The jdbc connection url
|
jdbc:hsqldb:hsql://127.0.0.1:9001
|
org.apache.jetspeed.production.database.user
|
The database user name to connect with.
|
sa
|
org.apache.jetspeed.production.database.password
|
The database user its password to connect with.
|
empty
|
org.apache.jetspeed.production.database.driver
|
The jdbc driver class name
|
org.hsqldb.jdbcDriver
|
org.apache.jetspeed.production.jdbc.drivers.path
|
A Java classpath style path to the jdbc driver classes or jar(s) needed for connecting to the database.
Example: /lib/ojdbc14.jar;/lib/nls_charset12.jar |
empty
|
一个例子:一个微型portal
的配置
必须首先确定在你的${USER_HOME}/build.properties文件中你已经定义了如上所描写的必需的属性。微型的portal配置用了HSQLDB数据库,它的属性描述如下:
# required portal configuration properties
org.apache.jetspeed.portal.home = /home/myportal/
org.apache.jetspeed.portal.groupId = myprojects
org.apache.jetspeed.portal.artifactId = myportal
org.apache.jetspeed.portal.name = My Test Portal
org.apache.jetspeed.portal.currentVersion = 1.0
# required application server properties
org.apache.jetspeed.server.home = ${CATALINA_HOME}/
org.apache.jetspeed.server.shared = ${org.apache.jetspeed.server.home}/shared/lib/
org.apache.jetspeed.deploy.war.dir = ${org.apache.jetspeed.server.home}/webapps/
org.apache.jetspeed.services.autodeployment.user = j2deployer
org.apache.jetspeed.services.autodeployment.password = xxxxx
org.apache.jetspeed.catalina.version.major = 5.5
注意:如果你想直接从源代码开始来构建缺省的Jetspeed-2的portal,就仅仅需要org.apache.jetspeed.portal.home属性。
4.
创建一个新的portal
应用程序
现在,我们要用Jetspeed-2的maven-plugin来配置,安装,构建一个新的客户化portal应用程序。
4.1设定maven的远程内容查找配置
为了安装一个Jetspeed-2基本的portal,maven远程内容查找需在你的${USER_HOME}/build.properties文件中有个正确的配置:
maven.repo.remote = http://www.bluesunrise.com/maven/, http://www.ibiblio.org/maven/, http://dist.codehaus.org/, http://cvs.apache.org/repository
注意:这些列出来的值的顺序非常重要,不要乱写。
4.2
安装Jetspeed-2
的maven-plugin
初次安装,以及你想更新Jetspeed-2的时候,你必须以如下方式安装maven-plugin:
maven -DartifactId=maven-jetspeed2-plugin -DgroupId=org.apache.portals.jetspeed-2 -Dversion=2.1.2 plugin:download
注意:你可以为你安装的特定版本指定版本号,2.1.2在这里只是一个例子而已。
4.3生成一个显得portal项目
一旦你安装了maven-plugin,并且设定了一些必需的属性,就可以按照如下的方式生成一个缺省的protal配置:
maven j2:portal.genapp
这个命令实际上执行了几个子命令,更详细的描述如maven-plugin文档所述。
4.4深入客户化portal
这一节不会指定做任何事情。一旦portal项目生成了之后,你就可以通过覆盖与合并你自己的配置、扩展,以自己的口味来改编和客户化portal。
你也可以重新生成或者更新部分or全部你的portal项目,这是通过前段中描述的j2:portal.genapp目标的或者用它的子目标来实现的。
4.5
构建portal
一旦你的portal配置和安装已经准备好了,你就可以在你的本地maven内容库中构建和安装portal应用程序,这是在你的portal项目目录中通过如下标准的maven行话来完成的:
maven war:install
你现在若准备配置新的portal应用程序,你就可以跳过如下
从源代码构建
Jetspeed-2的段落,进入
部署的段落
5.
从源代码构建Jetspeed-2
从源代码构建Jetspeed-2从某种意义上来说比较容易,但你要是不想创建一个新的客户化的portal的话,它也是必须做的一件事。
5.1
安装Jetspeed-2
的源码以及构建属性
Jetspeed-2源码包含了一个project.properties文件,这个文件提供了如上所述的所有必须的portal配置设定。
你没必要在你的${USER_HOME}/build.properties中定义它们当中的任何一个属性。
取而代之的是,你必须设定一个org.apache.jetspeed.project.home的属性,指定你要扩展的源码或者来自子版本的校验源码的路径,就像如下:
# required Jetspeed 2 portal configuration property for building from the source
org.apache.jetspeed.project.home = /home/apache/jetspeed-2/
注意:你仍然需要指定上面所述的应用程序服务器必须的属性值。
Jetspeed-2的project.properties文件用这个属性来定义org.apache.portal.home:
org.apache.jetspeed.portal.home = ${org.apache.jetspeed.project.home}
看得出来,当你从源码构建Jetspeed-2的portal项目时,它们是相同的。
当你要部署下面所述的portal时,你将会看到org.apache.jetspeed.portal.home的引用,而这个变量值在你的Jetspeed-2源码中可以作为你的根文件夹。
当构建Jetspeed-2的源码时,你想运行案例,而不想用缺省的HSQLDB测试数据库,你就需要覆盖缺省的数据库属性,类似的产品数据库属性描述如下:
org.apache.jetspeed.test.database.default.name
org.apache.jetspeed.test.database.url
org.apache.jetspeed.test.database.user
org.apache.jetspeed.test.database.password
org.apache.jetspeed.test.database.driver
org.apache.jetspeed.test.database.drivers.path
注意:由于JS2-320的规范说明,现在你必须硬码化测试数据库的属性值。
初始化maven-plugin
取而代替下载与安装Jetspeed-2的maven-plugin这一步骤,你将直接从源代码构建和安装它。你需要每次重复的更新它到一个Jetspeed-2新的版本,或者变更插件中的项目配置,插件本身以及源代码。
从Jetspeed-2源码的根目录来构建和安装maven-plugin的描述如下:
cd ${org.apache.jetspeed.project.home}
maven initMavenPlugin
可选:首先开始测试 HSQLDB
数据库
如果你要运行案例,并且用缺省的HSQLDB数据配置的话,你需要做的就是在构建Jetspeed-2之前在一个分离的控制台中开始测试数据库。
cd ${org.apache.jetspeed.project.home}
maven j2:start.test.server
一旦构建完成,你就可以用命令“Ctrl-C”停止数据库,关闭控制台。
构建Jetspeed-2
的portal
,演示portlet
应用程序
在你的本地maven内容库中完全构建和安装portal,以及演示portlet应用程序需要运行如下命令:
cd ${org.apache.jetspeed.project.home}
maven allClean allBuild
但是,你也想运行案例的话,就要换成如下命令:
cd ${org.apache.jetspeed.project.home}
maven -Dmaven.test.skip=false allClean allBuild
现在,你可以部署Jetspeed-2 的Portal了。
6.
部署和运行
可选:首先开始HSQLDB产品数据库
如果你在用缺省的HSQLDB数据库的话,在部署portal之前,你需要开始运行HSQLDB。
运行HSQLDB产品数据库的话,就需要在另一个控制台中执行如下命令:
cd ${org.apache.jetspeed.portal.home}
maven j2:start.production.server
你必须保证在部署期间,这个数据库始终处于运行状态。之后,你可以停止数据库,用“Ctrl-C”命令关闭控制台。
注意:当你用如下所述的j2:quickStart目标时,这一步是必须的。Jetspeed-2的maven-plugin提供了其他的子目标,你能用它们,而不需要创建一个产品数据库或者插入一个缺省的portal配置数据。具体细节,可以查看Plugin documentation所描述的可用的目标。
部署
我们现在只需要以覆盖形式部署到Tomcat 5或者Tomcat5.5中。
部署到其他服务器的具体信息可以到Jetspeed-2的Wiki中查找。
为了部署一个缺省的Jetspeed-2 的portal(包括演示的portlet应用程序),需要在不同的控制台运行如下命令:
cd ${org.apache.jetspeed.portal.home}
maven j2:quickStart
注意:maven-plugin documentation描述了其他的命令,你可以用来客户化你自己口味的部署。
运行
最后一步启动你的Tomcat服务器,portal将自动安装到任何一个要求被部署的portlet应用程序当中。然后,你可以在你自己的浏览器当中登陆了:
http://localhost:8080/jetspeed
注意:最后的单词jetspeed可以替换成你自己的portal应用程序(${org.apache.jetspeed.portal.artifactId})
缺省的安装用户帐号
缺省的Jetspeed-2的部署,有几个用户被插入到了portal数据库中,你你可以用来登陆portal:
用户名
|
密码
|
角色
|
admin
|
admin
|
admin, manager, user
|
manager
|
manager
|
manager, user
|
jetspeed
|
jetspeed
|
manager
|
user
|
user
|
user
|
tomcat
|
tomcat
|
Jetspeed-2
二进制版本学习
1.
一些基本的信息
基本规定
除非有特殊说明,你应当从Jetspeed目录中或者从你的个人portal文件中运行所有的maven构建命令。
另外,在*nix或者windows系统中,你必须以”/”作为文件的分隔符。例如:c:/windows,/home
Maven
在接下来的整篇文档中,我们不会细化Maven,如果你没有用过Maven,你可以读一下“What is Maven“,仅仅为了在软件开发项目中,获取对Maven的一些感觉。如果你的项目牵涉了多余一个或者两个人,那么你可以考虑仔细看一下Maven,因为他使得很多项目管理简单化以及标准化。
这儿有一些标准的maven行话,我们觉得有必要让你了解了解。
在这篇文档中,你将看到maven内容库中提及的内容。当你安装好Maven的时候,.maven/directory创建在你的${USER_HOME}目录中了。在.maven/目录下,你将看到