Java Portlets 介绍
- 什么是Portlets? - Web 组件
Portlets是一种Web组件-就像servlets-是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段,并与别的portlets生成的标记段组合在一起嵌入到portal页面的标记内。
以上是JSR 168 的标准解释。
JSR 168 是什么? - 标准
各IT厂商和开源组织开发各自的Portlet,IBM公司发布了WebSphere Portal Server 1.2/2.1/4.x/5.x, Apache Software Foundation推出了JetSpeed、BEA、Oracle、SAP、Sun也推出了各自的Portal服务器。这些Portal服务器各自提供不同的Java API给应用系统开发商开发Portlet,应用系统开发人员不得不为不同的Portal服务器使用互不通用的API开发功能相同的Portlet.
这个时候就出现了标准
2003年10月7日,Java Community Process(JCP)发布了JSR168: Portlet Specification 1.0的最终版本。该规范包含如下内容(参见 参考3)
定义了portlet运行环境 - portlet容器
定义了portlet容器和portlet之间的API
提供了portlet存储持久性和非持久性数据的机制
提供了portlet包含servlet和JSP的机制
定义了portlet打包,方便部署
保证了portlet在JSR 168门户中的二进制移植
能够以WSRP协议把JSR 168 portlet作为远程portlet运行。
官方地址:
http://jcp.org/aboutJava/communityprocess/final/jsr168/index.htmlPluto是什么? -- 是容器
Apache Pluto 是 JSR-168 和JSR-268的参考实现(pluto 2.0基于JSR-268(Java Portlet Specification V2.0),之前的版本基于JSR-168(Java Portlet Specification V1.0)),是实现了 Portlet API 的 Portlet 容器,充当Portlet 的运行时环境,与 Web 应用服务器的 Servlet 容器的运行时环境支持 Servlet 的情形非常相似。根据Java Portlet Specification,Portlet 容器是Servlet 容器的扩展,并且需要servlet 2.3 以上支持。
Apache Pluto 常作为验证portlet的容器,不作为产品生产的容器,目前比较流行的产品级容器有Liferay,eXo,Jetspeed,当然还有老大哥级别的Bea和IBM都有自己的portlet容器产品
官方地址:
http://www.apache.org/dyn/closer.cgi/portals/pluto/
一个超级简单的基于pluto ,portlet 开发例子
本地开发环境:
1) java1.5
1) eclipse3.7
2) pluto-current-bundle.zip (基于Tomcat5的, 相当于一个tomcat服务器)
下载地址: http://archive.apache.org/dist/portals/pluto/pluto-current-bundle.zip
开发步骤:
1) 解压下载的 pluto 的Zip 文件。(目录结构基本上和Tomcat的安装结构类似。)
1) 在Eclipse下新建 Dynamic Web Project--HelloPortal。
将 pluto目录下shared\lib 和 webapps\pluto\WEB-INF\lib 下面的jar 文件拷入项目 WEB-INF\lib 中
2) 在java SRC下新建
HelloWorldPortlet.java
java.lang.NullPointerExceptionorg.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:190)org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:139)javax.servlet.http.HttpServlet.service(HttpServlet.java:689)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)会报如上错误, 所以不能使用这个方式判断是否安装成功。