Jetspeed JetExpress Tutorial Portal 笔记4 -- po...

来源:百度文库 编辑:神马文学网 时间:2024/04/27 14:01:27
Jetspeed JetExpress Tutorial Portal 笔记4 -- portlets开发
Category:Jetspeed, Author: admin, Popularity: 4% [?] Jetspeed JetExpress Tutorial Portal笔记4
-- portlets开发
0. 前言
本文主要介绍基于Java Portlet API的Portlet开发。
包括的内容:
Eclipse集成 Portlet编写,portlet.xml配置 高级Portlet编程
说明:本系列文章并不是Jetspeed Tutorial JetExpress的完全翻译,关注点是其流程和其中容易出错的地方,及做Jetspeed二次开发比较关注的Jetspeed本身涉及的内容,因此原文中的图,只要不涉及Jetspeed原理及架构等的,都不会贴图。并且内容上可能并不完全一样,会把作者自己的一些心得和注意事项随时加入到需要的地方。
1. Eclipse集成
使用maven生成eclipse项目文件,导入到eclipse中即可。maven能够为eclipse生成project文件和classpath文件,并且能够自动添加依赖关系(主要指编译时依赖的jar)。
1.1 为jetexpress项目创建eclipse项目:
# Linux
cd /JetspeedTraining/workspace/jetexpress
mvn eclipse:eclipse
cp portal/.classpath .
cp portal/.project .
# Windows
cd \JetspeedTraining\workspace\jetexpress
mvn eclipse:eclipse
copy portal\.classpath .
copy portal\.project .
1.2 为express-demo项目创建eclipse项目:
# Linux
cd /JetspeedTraining/workspace/jetexpress/applications/express-demo
mvn eclipse:eclipse
# Windows
cd \JetspeedTraining\workspace\jetexpress\applications\express-demo
mvn eclipse:eclipse
1.3 eclipse项目说明
同样为express-demo portlet应用项目创建eclipse项目。因为eclipse不支持maven形式的多项目(基于pom的父子项目),所以为每个maven管理的项目建立独立的eclipse项目。
1.4 设置eclipse项目
创建好之后,在eclipse中导入即可(类型为workspace中已存在项目)。
导入之后为eclipse添加一个变量M2_REPO,指向C:/JetspeedTraining/maven/repository(相关知识请参阅maven文档)。
设置好之后eclipse会自动重新编译项目(编译设置发生改变时)。
如果喜欢的话,可以安装eclipse的SVN插件,这样就可以在eclipse直接访问jetspeed的SVN库了(相关知识请另行参阅相关文档)。
2. Portlet编写及配置
2.1 编写Hello World Portlet
在express-demo工程中,为com.bluesunrise.portal.portlets.tutorial包添加BonjourWorld类,继承javax.portlet.GenericPortlet类。
注:这里javax.portlet.GenericPortlet类即portlet API。
为BonjourWorld类增加对doEdit、doHelp、doView三个方法的实现。这里的每个方法都关联了一个portlet模式(portlet mode),即对编辑按钮点击、帮助按钮点击和浏览portlet时的处理方法。添加一个简单的输出如下:
protected void doView(RenderRequest request, RenderResponse response) throws
PortletException, IOException
{
response.setContentType(”text/html”);
response.getWriter().println(”Bonjour: View Mode”);
}
doEdit和doHelp处理类似。
2.2 配置portlet.xml
写好了之后,我们来编辑portlet.xml文件,为我们的portlet创建一个portlet描述条目。portlet.xml文件在工程的WEB-INF目录下,与web.xml同级目录。注意里面定义的就是我们刚刚写好的几个方法。

Bonjour Monde Portlet
BonjourMonde
Bonjour Monde
com.bluesunrise.portal.portlets.tutorial.BonjourWorld

text/html
VIEW
EDIT
HELP

en

Bonjour Monde
Bonjour
tutorial,bonjour,hello


2.3 配置页面
2.3.1 创建portal site
创建一个页面来放刚刚创建的portlet。在jetexpress工程(/JetspeedTraining/workspace/jetexpress)里,添加一个目录portal/src/webapp/WEB-INF/pages/tutorial/,把它作为我们创建的portal site的根目录(portal site就是具有树状结构的页面)。
2.3.2 编写folder.metadata文件来描述这个portal资源


Tutorial
Autodidacte

public-edit


2.3.3 创建默认页面degault-page.psml

portlet-decorator=”express-portlet”
skin=”express”/>
JetExpress Tutorials
Tutorials




为portlet窗口添加新portlet的引用
2.3.4 部署新的portlet和新的页面
# Linux
cd /JetspeedTraining/workspace/jetexpress
ant
cd applications/express-demo
mvn
cp target/express-demo-1.0.war /JetspeedTraining/tomcat-express/webapps/express-demo.war
# Windows
cd \JetspeedTraining\workspace\jetexpress
ant
cd applications\express-demo
mvn
copy target\express-demo-1.0.war \JetspeedTraining\tomcat-express\webapps\express-demo.war
注:命令的含义在笔记3中有相关描述
ant 调用默认target,拷贝修改的页面到tomcat
mvn 默认为install,生成war文件
cp …  拷贝war文件到tomcat中(热部署)
3 高级Portlet编程
直接集成javax.portlet.GenericPortlet的开发方式虽然可行,但是无论从哪个角度说都不是最好的方式,因此实际应用中,这样的应用很少(除非应用本身及其简单)。
对于大多数Jetspeed的二次开发者来说,都希望能用自己最熟悉的技术来开发portlets,而Jetspeed刚好提供了这样的可能。
3.1 Apache Portals Bridges项目介绍
Portals Bridges项目提供了符合JSR-168标准的portlet的多种开发方式,为开发者提供了使用自己熟悉的技术开发portlet的能力,开发者可以使用Struts、JSF,甚至PHP、Perl、Velocity等等进行portlet的开发。
3.2 基于Portals Bridges的开发
本小节已经是对原文的扩展,具体细节本文不再详述,笔者会在其他文章中描述。
4. 总结
无论是基于portlet API的开发,还是基于Portals Bridges的开发,流程都比较简单,具体的应用还需要依赖具体的环境。
对于目前涉及到的内容来说,还缺少portlet的测试内容,portlet的测试类似于servlet的测试,需要依赖于portlet容器,而通过部署到Jetspeed中进行集成测试的话又比较浪费时间和精力,毕竟不能只修改一点代码就部署一次,因此需要探索更高效和可行的测试方法。
下一步将研究如果通过Portals Bridges进行开发及portlet的测试工作。