JSR286Portlet.docx
《JSR286Portlet.docx》由会员分享,可在线阅读,更多相关《JSR286Portlet.docx(23页珍藏版)》请在冰豆网上搜索。
![JSR286Portlet.docx](https://file1.bdocx.com/fileroot1/2023-1/27/10569a95-1a69-4ea8-8120-46421da68fa5/10569a95-1a69-4ea8-8120-46421da68fa51.gif)
JSR286Portlet
JSR286Portlet配置
首先介绍JSR286Portlet实现ApachePluto2.0.3平台的构建过程,然后通过在ApachePluto2.0平台上开发和部署JSR286Portlet应用程序。
准备工作
ApachePluto2.0是JSR286的参考实现,是实现了Portlet2.0API的Portlet容器,充当Portlet的运行时环境,与web应用服务器的Servlet容器的运行时环境支持Servlet的情形非常相似。
Pluto2.0目前支持的JSR286Portlet新特性有资源服务、事件、Portlet过滤器、共享呈现参数、Portlet窗口。
1:
构建JSR286Portlet运行环境ApachePluto2.0.3
1:
安装jdk1.6.0_10并设置环境变量
2:
安装apache-maven-3.0.4下载并解压,设定Maven安装路径为${M2_HOME}.
将${M2_HOME}\bin目录加到系统的PATH环境变量中。
3:
安装tomcat6下载并解压,设定安装路径为${TOMCAT_HOME}
4:
获取pluto-2.0.3-source-release.zip源码
5:
使用Maven构建Pluto
编译${M2_HOME}\conf目录下的setting.xml文件,增加元素:
Setting.xml文件:
org.apache.portals.pluto
Pom.xml文件:
2.1.9
pluto2.0.3的相关文件就被安装到tomcat相应目录下:
D:
\>cdpluto2
D:
\pluto2>mvninstall
D:
\pluto2>mvnPluto:
install–DinstallDir=${TOMCAT_HOME}
如果tomcat安装路径中存在空格,则需要用双引号把路径引起来:
D:
\pluto2>mvnPluto:
install–DinstallDir=”C:
\apache-tomcat-6.0.30”
在网上下载commons-logging-api-1.1.jar文件,拷贝到${TOMCAT_HOME}\lib\目标下。
修改tomcat下的\conf\tomcat-users.xml文件,添加角色pluto,并在该角色下新增一个用户:
验证安装:
运行${TOMCAT_HOME}\bin\startup.bat,启动tomcat服务器。
浏览器访问URLhttp:
//localhost:
8080/pluto/portal,如图:
Pluto登录界面
输入添加到pluto角色的用户名和密嘛都为pluto,进入pluto的portal页面:
Plutoportal界面
至此,JSR286Portlet运行环境ApachePluto2.0.3搭建成功。
2:
使用eclipse建立开发环境
下载eclipse-jee-helios-SR2-win32.zip,注意要下载EclipseIDEforJavaEEDevelopers。
启动eclipse,对eclipse进行配置:
执行菜单项目Wndow->Preferences,打开Preferences对话框,选择Server->RuntimeEnvironments
点击Add按钮,将Tomcat6添加为运行时
单击Finish结束配置,单击OK关闭Preferences对话框。
在eclipse的Server视图中点击鼠标右键,选择New->Server。
如图:
新建服务器
在弹出的窗口中选择目标运行服务器ApacheTomcat6.0Server,运行时呈现ApacheTomcatv6.0,点击Finish。
选择目标运行服务器
在Servers视图中双击刚刚新建的Tomcat服务器,打开服务器配置页面,如图:
Tomcat服务器配置页面
在ServerLocations中选择UseTomcatInstallation,DeployPath选择${TOMCAT_HOME}\webapps,如图9所示。
至此开发环境设置完毕
必须设定DeployPath为Tomcat安装目录下的webapps目录,否则使用Eclipse启动Tomcat后,Pluto不能加载进来。
Tomcat服务器配置
创建JSR286Portlet应用
1:
使用eclipse创建PortletWeb项目
新建项目,项目类型选择Web->DynamicWebProject,如图:
接下来,设置项目属性,项目名称jsr286portlets,目标运行时ApacheTomcatV6.0,保留默认设置,点击Finish,如图:
生成项目结构如图:
在META-INF下新建context.xml文件,内容如下:
该文件为tomcat的特有配置文件,根据Pluto的要求,该Web工程的上下文应该可以被其它JavaEE程序访问,所以crossContext参数设置为true
在WEB-INF下新建portlet.xml文件,内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
version="2.0">
--在该位置填写portlet描述内容-->
2:
资源服务
新增Java类TestPortlet,实现了javax.portlet.Portlet和javax.portlet.ResourceServingPortlet接口
TestPortlet.java
packagecom.ibm.samples.jsr286.portlets;
importjava.io.IOException;
importjavax.portlet.ActionRequest;
importjavax.portlet.ActionResponse;
importjavax.portlet.Portlet;
importjavax.portlet.PortletConfig;
importjavax.portlet.PortletException;
importjavax.portlet.PortletRequestDispatcher;
importjavax.portlet.RenderRequest;
importjavax.portlet.RenderResponse;
importjavax.portlet.ResourceRequest;
importjavax.portlet.ResourceResponse;
importjavax.portlet.ResourceServingPortlet;
importjavax.servlet.http.HttpServlet;
publicclassTestPortletextendsHttpServletimplementsPortlet,ResourceServingPortlet{
privatestaticfinallongserialVersionUID=1L;
privatePortletConfigportletConfig;
publicvoidinit(PortletConfigportletConfig)throwsPortletException{
this.portletConfig=portletConfig;
}
publicvoiddestroy(){
}
publicvoidprocessAction(ActionRequestactionRequest,
ActionResponseactionResponse)throwsPortletException,IOException{
}
publicvoidrender(RenderRequestrenderRequest,
RenderResponserenderResponse)throwsPortletException,IOException{
PortletRequestDispatcherportletRequestDispatcher=portletConfig
.getPortletContext().getRequestDispatcher(
"/WEB-INF/jsp/TestPortletView.jsp");
portletRequestDispatcher.include(renderRequest,renderResponse);
}
publicvoidserveResource(ResourceRequestresourceRequest,
ResourceResponseresourceResponse)throwsPortletException,
IOException{
PortletRequestDispatcherportletRequestDispatcher=portletConfig
.getPortletContext().getRequestDispatcher(
"/WEB-INF/jsp/TestPortletResource.jsp");
portletRequestDispatcher.include(resourceRequest,resourceResponse);
}
}
在WEB-INF目录下新建jsp目录,在jsp目录下新建portlet呈现阶段所显示的jsp文件TestPortletView.jsp。
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="portlet"uri="
defineObjects/>
Testportletpage. |
resourceURL/>">ClickmetorequestResourceURL |
在jsp目录下新建portlet资源服务所请求的jsp文件TestPortletResource.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="portlet"uri="
defineObjects/>
编译portlet.xml文件,为TestPortlet增加一个portlet定义片段,该TestPortlet仅支持View模式
TestPortlet
TestPortlet
com.ibm.samples.jsr286.portlets.TestPortlet
text/html
VIEW
TestPortlet
编译web.xml文件,增加Pluto所需的servlet定义及映射。
TestPortlet
org.apache.pluto.container.driver.PortletServlet
portlet-name
TestPortlet
1
TestPortlet
/PlutoInvoker/TestPortlet
在eclipse的Servers视图中,右键单击Tomcat服务器,点击AddandRemoveProjects,在弹出的对话框中将jsr286portlets项目添加到右测栏目中,点击Finish确认,如图:
在Servers视图中启动服务器,Console视图中输出Tomcat启动信息。
浏览器中输入相应url访问pluto的portal页面,登录,点击PlutoAdmin导航栏,如图:
使用该工具新建一个页面,如"TestJSR286PortletPage"。
导航栏中马上新增一项"TestJSR286PortletPage",点击进入该页面可以见到目前该页面没有内容。
选择jsr286portlets应用程序中的PortletTestPortlet,选择上一步新建的页面,点击AddPortlet按钮,将TestPortlet布局到"TestJSR286PortletPage"页面。
进入"TestJSR286PortletPage"页面,该页面新增了一个PortletTestPortlet,
点击超链接,进入所请求的资源页面
3事件
简单事件
新建Java类TestSimpleEventSenderPortlet,在该Portlet类的processAction方法中,发送一个简单事件,事件内容为一个字符串。
TestSimpleEventSenderPortlet.java文件
packagecom.ibm.samples.jsr286.portlets;
importjava.io.IOException;
importjavax.portlet.ActionRequest;
importjavax.portlet.ActionResponse;
importjavax.portlet.Portlet;
importjavax.portlet.PortletConfig;
importjavax.portlet.PortletException;
importjavax.portlet.PortletRequestDispatcher;
importjavax.portlet.RenderRequest;
importjavax.portlet.RenderResponse;
publicclassTestSimpleEventSenderPortletimplementsPortlet{
privatePortletConfigportletConfig;
publicvoidprocessAction(ActionRequestactionRequest,
ActionResponseactionResponse)throwsPortletException,IOException{
actionResponse.setEvent("simple-event","simple-eventissentby"
+portletConfig.getPortletName());
}
publicvoidrender(RenderRequestrenderRequest,
RenderResponserenderResponse)throwsPortletException,IOException{
PortletRequestDispatcherportletRequestDispatcher=portletConfig
.getPortletContext().getRequestDispatcher(
"/WEB-INF/jsp/TestSimpleEventSenderPortletView.jsp");
portletRequestDispatcher.include(renderRequest,renderResponse);
}
@Override
publicvoiddestroy(){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidinit(PortletConfigportletConfig)throwsPortletException{
//TODOAuto-generatedmethodstub
this.portletConfig=portletConfig;
}
}
在jsp目录下新建jsp文件TestSimpleEventSenderPortletView.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="portlet"uri="
defineObjects/>
actionURL/>">
Testsimpleeventsenderportletpage. |
|
新建Java类TestSimpleEventReceiverPortlet,在该Portlet实现了javax.portlet.EventPortlet接口,可以响应事件。
TestSimpleEventReceiverPortlet.java文件
packagecom.ibm.samples.jsr286.portlets;
importjava.io.IOException;
importjavax.portlet.ActionRequest;
importjavax.portlet.ActionResponse;
importjavax.portlet.Event;
importjavax.portlet.EventPortlet;
importjavax.portlet.EventRequest;
importjavax.portlet.EventResponse;
importjavax.portlet.Portlet;
importjavax.portlet.PortletConfig;
importjavax.portlet.PortletException;
importjavax.portlet.PortletRequestDispatcher;
importjavax.portlet.RenderRequest;
importjavax.portlet.RenderResponse;
publicclassTestSimpleEventReceiverPortletimplementsPortlet,EventPortlet{
privatePortletConfigportletConfig;
pu