apache上2.0的开发文档很少,看了前人写的2.0的开发示例,以及pluto2.0.1自带的例子,完成了第一个开发例子。


相关参考资料:

IBM上的例子,以及 pluto2.0.1自带的pluto-testsuite;


第一步:

  首先配置Eclipse中的tomcat:

   注意点: 在server窗口配置中, Server Locations 中选择 Use Tomcat Installation,Deploy Path选择 ${TOMCAT_HOME}\webapps,必须设定 Deploy Path 为 Tomcat 安装目录下的 webapps 目录,否则使用 Eclipse 启动 Tomcat 后,Pluto 不能加载进来。(详见IBM例子的tomcat配置说明)。


第二步:创建portlet应用:

1. 首先在Eclipse中,建立一个Dynamic Web Project

    -- 注意创建Project时候,“dynamic web module version”:选用的versin,必须要和自己配置的tomcat版本相适应。自己在开发的时候,为了调整tomcat,有时候用了tomcat5.5,可是工程配置不进来,原因就是在创建工程的时候选择了2.5版本,而tomcat5.5只支持2.4的版本


2. 在 META-INF 下新建 context.xml 文件

 

<Context crossContext="true" />

 

 该文件为 Tomcat 的特有配置文件,根据 Pluto 的要求,该 Web 工程的上下文应该可以被其它 JavaEE 程序访问,所以 crossContext 参数设置为 true。


3. 在 WEB-INF 下新建 portlet.xml 文件

 

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app
    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
            http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    version="2.0">
   <!-- 在该位置填写portlet描述内容,在后面开发好的portlet要加入进来 -->
</portlet-app>
 

 

4. 新增Java类:

   在IBM的说明中,是实现了 javax.portlet.Portlet 和 javax.portlet.ResourceServingPortlet 接口,在新下载的pluto test-suite中,是继承了GenericPortlet

 

import javax.portlet.GenericPortlet;

public class TestPortlet extends GenericPortlet {
 ...

    public void serveResource(ResourceRequest request, ResourceResponse response)
            throws PortletException, IOException {

        getPortletContext().getRequestDispatcher("自己的页面").include(request, response);
        
   }


    @Override    
    public void doView(RenderRequest request, RenderResponse response)
    throws PortletException, IOException {

        PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher(显示的页面);
  
        dispatcher.include(request, response);
    
   }

}
 

 

在这个类中的实现也和IBM的说明不同

 

5. 增加2个页面:

    portlet 呈现阶段所显示的 jsp 文件 TestPortletView.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0"%>
<portlet:defineObjects />
<table>
    <tr>
        <td><h1>Test portlet page.</h1></td>
    </tr>
    <tr>
        <td><a href="<portlet:resourceURL/>">Click me to request Resource URL</a></td>
    </tr>
</table>
 

 

 portlet 资源服务所请求的 jsp 文件 TestPortletResource.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0"%>
<portlet:defineObjects />
<table>
    <tr>
        <td><h1>Test portlet resource page.</h1></td>
    </tr>
</table>
 

 

6.编辑 portlet.xml 文件, 为 TestPortlet 增加一个 portlet 定义片断,该 TestPortlet 仅支持 View 模式

 

<portlet>
    <portlet-name>TestPortlet</portlet-name>
    <display-name>TestPortlet</display-name>
    <portlet-class>com.ibm.samples.jsr286.portlets.TestPortlet</portlet-class>
    <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>VIEW</portlet-mode>
    </supports>
    <portlet-info>
        <title>TestPortlet</title>
    </portlet-info>
</portlet>

 

 

7. 编辑 web.xml 文件,增加 Pluto 所需的 servlet 定义及映射。读者请注意,该定义为 Pluto 2.0 Portlet 容器所需,不属于 JSR 286 标准的要求。

 

<servlet>
    <servlet-name>TestPortlet</servlet-name>
    <servlet-class>
        <!-- IBM例子中的类: org.apache.pluto.core.PortletServlet -->
        <!-- 在pluto2.0.1 test-suite中的类:-->
        org.apache.pluto.container.driver.PortletServlet
    </servlet-class>
    <init-param>
        <param-name>portlet-name</param-name>
        <param-value>TestPortlet</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>TestPortlet</servlet-name>
    <url-pattern>/PlutoInvoker/TestPortlet</url-pattern>
</servlet-mapping>
 

8. 将工程加到server中,运行server,余下的部分,看一下IBM示例中的说明操作即可

 

 

在 Eclipse 的 Servers 视图中,右键单击 Tomcat 服务器,点击 Add and Remove Projects,在弹出的对话框中将 jsr286portlets 项目添加到右侧栏目中,点击 Finish 确认,如图13:


图 13. 部署项目到服务器 
Pluto2.0.1第一个例子 

在 Servers 视图中启动服务器,Console 视图中输出 Tomcat 启动信息。

浏览器中输入相应 url 访问 pluto 的 portal 页面,登录,点击 Pluto Admin 导航栏,如图14:


图 14. Pluto 管理界面 
Pluto2.0.1第一个例子 

使用该工具新建一个页面,如 "Test JSR 286 Portlet Page"。导航栏中马上新增一项 "Test JSR 286 Portlet Page",点击进入该页面可以见到目前该页面没有内容。

选择 jsr286portlets 应用程序中的 Portlet TestPortlet,选择上一步新建的页面,点击 Add Portlet 按钮,将 TestPortlet 布局到 "Test JSR 286 Portlet Page"页面。如图 15:


图 15. 布局 Portlet 到 Portal 页面 
Pluto2.0.1第一个例子 


进入"Test JSR 286 Portlet Page"页面,该页面新增了一个 Portlet TestPortlet,如图16:


图 16. TestPortlet 界面 
Pluto2.0.1第一个例子 

注意到上图 portlet 的标题显示为 null, 这是由于 pluto 2.0 目前处于开发阶段,存在一些 bug,读者可不必理会。

点击超链接,进入所请求的资源页面,如图 17:


图 17. TestPortlet 资源界面 
Pluto2.0.1第一个例子 

观察此页面,发现此页面只显示了 TestPortletResource.jsp 的内容,未经过 Portal 容器的修饰, 和直接请求一个 Servlet 或者 JSP 页面的效果是一样的。这就是 JSR 286 Portlet 资源服务的主要特性。对照此示例,

相关文章: