打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Jetspeed JetExpress Tutorial Portal 笔记4 -- po...

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(”<b>Bonjour: View Mode</b>”);
    }
doEdit和doHelp处理类似。
2.2 配置portlet.xml

写好了之后,我们来编辑portlet.xml文件,为我们的portlet创建一个portlet描述条目。portlet.xml文件在工程的WEB-INF目录下,与web.xml同级目录。注意<supports>里面定义的就是我们刚刚写好的几个方法。
    <portlet>
        <description>Bonjour Monde Portlet</description>  
        <portlet-name>BonjourMonde</portlet-name> 
        <display-name>Bonjour Monde</display-name>
        <portlet-class>com.bluesunrise.portal.portlets.tutorial.BonjourWorld</portlet-class> 
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
            <portlet-mode>EDIT</portlet-mode>
            <portlet-mode>HELP</portlet-mode>           
        </supports>
        <supported-locale>en</supported-locale>       
     <portlet-info>
        <title>Bonjour Monde</title>
          <short-title>Bonjour</short-title>
          <keywords>tutorial,bonjour,hello</keywords>
       </portlet-info>
    </portlet>
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资源
<?xml version=”1.0″ encoding=”UTF-8″?>
<folder>
  <title >Tutorial</title> 
  <metadata name=”title” xml:lang=”fr”>Autodidacte</metadata>

  <security-constraints>
    <security-constraints-ref>public-edit</security-constraints-ref>
  </security-constraints>
</folder>

2.3.3 创建默认页面degault-page.psml
<page>
  <defaults layout-decorator=”express-page”
            portlet-decorator=”express-portlet”
            skin=”express”/>
  <title>JetExpress Tutorials</title>
  <short-title>Tutorials</short-title>
  <fragment id=”tutorial-100″ type=”layout” name=”jetspeed-layouts::VelocityTwoColumns”> 
   <fragment id=”express-101″ type=”portlet” name=”express-demo::BonjourMonde”/>
  </fragment>
</page> 
为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的测试工作。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JetSpeed-2技术资料 - 专注开源 - 张老三的专栏
jetspeed build
Jetspeed2学习笔记(六)
Welcome to Jetspeed-2
Portal实现原理
Liferay系列文章(四)Portal产品介绍--开放源码Portal产品
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服