- 关键字: apache pluto 实践
- Portlet with Apache Pluto 实践(一)---感受portlet
- 概述
- 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容器产品,有兴趣可以查阅一下相关资料。
- “吾常整日而思矣,不如须臾之所学” 废话少说,让我们先动手来做一个Demo来感受一下Portlet是为何物。说明一下,Java Portlet Specification v2 (JSR 286)2008年3月份刚出来,所以本文基于Java Portlet Specification v1 (JSR 168),以后在讨论JSR 286的新特性。
- 开始前请准备下列产品:
- ?JDK 1.5 或者更高版本
- ?Apache Tomcat 5.5.x或更高版本
- ?Apache Pluto 1.1.4
- ?Apache Maven 2.x(可选)
- ?Eclipse Europa(Eclipse V3.3) for JavaEE Developers或更高
- Portlet 运行环境的搭建
- Apache Pluto 官方当前发布的版本为1.4.1,包含以下四个下载选项:
- ? pluto-current-bundle – 该包提供了一个与Tomcat 5.x绑定的pluto版本,你可以将你的portlet应用直接部署在里面,跟你平常部署一般web应用没有什么差别。
- ? pluto-current-bin – 包含了pluto lib 包、portal 和 测试应用。
- ? pluto-current-container-bin – 仅包含pluto容器 lib 包
- ? pluto-current-src – 包含了pluto 源文件
- 1.安装JDK、Maven 2、安装 Tomcat并设定相应的环境变量
- 此步骤不再熬述,具体请查阅相关文档
- Jdk:http://java.sun.com/
- Maven2:http://maven.apache.org/
- Tomcat:http://tomcat.apache.org/
- 2.下载安装 Apache Pluto 1.1.4
- 安装方法有三种:第一种是二进制安装,第二种是从源代码安装,第三种是手动配置,我喜欢第三种,不过这里还是一一介绍一下。
- 方法一:二进制安装
- 1.下载pluto-current-bundle,并解压(如,d:\ pluto-1.1.4),得到的目录结构如下:
- 其中的PlutoDomain即为容器配置的Portal和测试两个应用war包,当此Tomcat启动时会自动部署。这个如果你看着奇怪,可以看一下:D:\pluto-1.1.4\conf\Catalina\localhost 下的pluto.xml和testsuite.xml就明白了。
- 2.在D:\pluto-1.1.4\bin中执行,startup.bat (Windows) or startup.sh (Unix)。请注意:现在D:\pluto-1.1.4 其实就是个tomcat 5.5, 按此方法安装不需要再下载Tomcat。其默认端口为8080,如果该端口被占用,请更改端口。(在D:\pluto-1.1.4\conf 下的server.xml中修改)。这里假设不更改。
- 3.在浏览器中输入:http://localhost:8080/pluto/portal 即可访问pluto portal.
- 4. 默认设置了两个帐号:
- User: pluto password: pluto
- User: tomcat password: tomcat
- 安装成功后就可以体验什么是portal了。
- 方法二:由源代码构建
- 先觉条件,请确认已经安装并配置好了Maven2,可以打开命令行,输入:
- C:\Documents and Settings\db2admin>mvn -version
- Maven version: 2.0.9
- Java version: 1.6.0_10-beta
- OS name: "windows 2000" version: "5.0" arch: "x86" Family: "windows"
- 如果能看到这些内容,则说明Maven2已经安装好了。
- 1.下载pluto-current-src,并解压(如:D:\pluto-1.1.4),得到的目录结构如下:
- 此目录就是pluto的项目模块了,熟悉Maven的话一点困难都没有,本人也是因为刚刚接触,就不在此班门弄斧了。
- 2.编辑 %MAVEN_HOME%\conf 或者~/.m2/settings.xml目录下的settings.xml 文件,增加 <pluginGroups> 元素:
- <settings>
- ……
- <pluginGroups>
- <pluginGroup>org.apache.pluto</pluginGroup>
- </pluginGroups>
- ……
- </settings>
- 如果没有做好这一步,执行安装是会失败的。
- 3.在命令行控制台,切换到D:\pluto-1.1.4,并执行如下命令:
- D:\>cd pluto-1.1.4
- D:\pluto-1.1.4>mvn install
- D:\pluto-1.1.4>mvn pluto:install -DinstallDir=D:/Tomcat6.0
- 本机安装的为Tomcat6。0,之前安装的Tomcat5.5也丝毫没有问题,需要注意的是,如果你的服务器路径包含空格的话,需要用引号将服务器路径包含起来,不然空格在控制台中乱码,造成编译失败。如下所示:
- C:\pluto> mvn pluto:install -DinstallDir="C:\Program Files\Apache Software Foundation\Tomcat 5.5"
- 待构建成功后部署就完成了。
- 其实Pluto的容器安装部署没那么麻烦,但是现在Maven大行其势,很多开源软件也基于Maven来构件,有点要冷落Ant的嫌疑。不管Ant 还是 Maven,都大大提高了初学者的门槛。整个容器部署构建过程其实就拷贝了几个包到相应的目录,部署了一个Pluto portal 和一个测试套件。具体我们在手工安装中讲解到底是如何来安装Pluto容器。
- 方法三:手工安装
- 手工安装就跟部署一般的web应用程序没有什么差别。
- 在方法二中执行mvn install后,会下载一系列的包含jar的lib包,当然这些包可以在pluto-current-bundle、pluto-current- bin、pluto-current-container-bin中找到。下面具体描述:
- 步骤1,部署容器,拷贝下列文件至(Tomcat 5.5)<TOMCAT_HOME>/shared/lib或者(Tomcat 6.0)<TOMCAT_HOME>/lib
- ?castor-1.1.1.jar
- ?pluto-container-1.1.4.jar
- ?pluto-descriptor-api-1.1.4.jar
- ?pluto-descriptor-impl-1.1.4.jar
- ?pluto-taglib-1.1.4.jar
- ?portlet-api-1.0.jar
- 步骤2. 拷贝下列文件至(Tomcat 5.5)<TOMCAT_HOME>/common/endorsed或者(Tomcat 6.0)<TOMCAT_HOME>/endorsed (endorsed目录为新建目录)
- ?xercesImpl-2.6.2.jar
- ?xmlParserAPIs-2.6.2.jar
- 这个主要是用来兼容Java 1.4 环境运行Pluto 1.1。
- 步骤3. 从pluto-1.1.4-bundle\pluto-1.1.4\conf\Catalina\localhost
- 或者
- D:\pluto-1.1.4\pluto-portal\src\main\resources\pluto.xml
- D:\pluto-1.1.4\ pluto-testsuite\src\main\resources\testsuite.xml
- 中拷贝pluto.xml、testsuite.xml 至<TOMCAT_HOME>/conf/Catalina/localhost目录下。这两个就是Context,熟悉的话可以在<TOMCAT_HOME>\conf\Server.xml (Tomcat 6.0默认没有此目录,需要建立此目录)
- 步骤4. 部署pluto-portal.war、pluto-testsuite.war,可以在下列目录找到这两个应用:
- D:\pluto-1.1.4\pluto-portal\target\pluto-portal.war
- D:\pluto-1.1.4\pluto-testsuite\target\pluto-testsuite.war 或者
- pluto-1.1.4-bundle\pluto-1.1.4\PlutoDomain
- 根据pluto.xml、testsuite.xml中的docBase指定的路径将pluto-portal.war、pluto- testsuite.war拷贝到相应的目录,如果pluto.xml、testsuite.xml来自Maven构件的则把pluto- portal.war、pluto-testsuite.war放在<TOMCAT_HOME>/webapps,如果pluto.xml、 testsuite.xml来自
- pluto-1.1.4-bundle\pluto-1.1.4\conf\Catalina\localhost,则放在
- <TOMCAT_HOME>\PlutoDomain目录下。
- 说明:为了能够在应用范围使用Pluto的PortletSession 属性,需要修改<TOMCAT_HOME>/conf/server.xml 中默认8080端口的Connector元素,增加属性:emptySessionPath="true",但是如果设为true,所有path的 session cookie将设为/。这对portlet规范的实现非常有用,但是在服务器需要同时提供多个被访问的应用时,会对性能造成很大的影响。如果没有设置,该值为false。另外pluto-current-bundle里面已经做了设置,但是通过Maven构建时并没有设置,需要手动设置。
- 步骤5. 配置用户和角色
- 编辑<TOMCAT_HOME>/conf/tomcat-users.xml,增加一个用户和角色。
- <?xml version="1.0" encoding="utf-8"?>
- <tomcat-users>
- <role rolename="manager"/>
- <role rolename="pluto"/>
- <role rolename="tomcat"/>
- <role rolename="role1"/>
- <user username="tomcat" password="tomcat" roles="tomcat,pluto,manager"/>
- <user username="role1" password="tomcat" roles="role1"/>
- <user username="both" password="tomcat" roles="tomcat,role1"/>
- <user username="pluto" password="pluto" roles="pluto,manager"/>
- </tomcat-users>
- 该配置为Pluto 配置了pluto 和 tomcat两个帐号。
- 请不要忘记配置<user username="both" password="tomcat" roles="tomcat,role1"/>
- 到此,Portlet的运行环境搭建完成
- 3.验证安装
- 启动 Tomcat 服务器。浏览器访问http://localhost:8080/pluto/portal
- 输入用户名和密码(如: pluto/pluto),进入 Pluto 的 Portal 页面:
- 大家一定要注意编辑D:\Tomcat6.0\conf\ tomcat-users.xml添加角色和用户,而且<TOMCAT_HOME>/conf/Catalina/localhost 下的pluto.xml、 testsuite.xml 的应用路径配置:docBase="../PlutoDomain/pluto-portal-1.1.4.war" 则表示pluto-portal-1.1.4.war 应该放置在D:\Tomcat6.0\PlutoDomain目录下。
- 能成功登陆,说明Portlet环境已经配置成功了。
- 建立开发环境
- IDE其实可以自己选择,这里使用Eclipse 3.4 for J2EE Developers, 2008年6月26号刚出炉的,来体验一下。
- 为项目开发配置动态web项目的运行时(Runtime Server)服务器配置。
- 启动 Eclipse, 打开菜单项目 Window -> Preferences,在Preferences 对话框,选择 Server-> Runtime Environments 项
- 点击 Add 按钮,将 Tomcat 6 添加为运行时,
- 设置Tomcat 6的安装路径,其他不需要更改
- 单击 Finish 结束配置,单击 OK 关闭 Preferences 对话框。
- 在 Eclipse 的 Servers 视图中单击鼠标右键,选择 New -> Server。
- 弹出的窗口中选择目标运行服务器 Apache Tomcat 6.0 Server,运行时呈现 Apache Tomcat V6.0,如点击Finish
- 在 Servers 视图中双击刚刚新建的 Tomcat 服务器,打开服务器配置页面。
- 在 Server Locations 中选择 Use Tomcat Installation, DeployPath 选择 D:\Tomcat6.0\webapps,如所示。至此开发环境设置完毕。
- Portlet 程序示例
- 1.在eclipse中新创建一个 Dynamic Web Project,
- 设置项目属性,项目名称 HelloPortal, 目标运行时 Apache Tomcat V6.0,保留默认设置,点击 Finish
- 2.创建一个HelloWorldPortlet类,该类继承javax.portlet.GenericPortlet
- 代码如下:
- // HelloWorldPortlet.java
- package com.ccsee.portal.portlet;
- import java.io.IOException;
- import javax.portlet.GenericPortlet;
- import javax.portlet.PortletException;
- import javax.portlet.RenderRequest;
- import javax.portlet.RenderResponse;
- public class HelloWorldPortlet extends GenericPortlet {
- @Override
- protected void doView(RenderRequest request, RenderResponse response)
- throws PortletException, IOException {
- response.setContentType("text/html");
- response.getWriter().println("Hello, This is the portal world!");
- }
- }
- 3. 在WEB-INF目录下新建portlet.xml 配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <portlet-app
- xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
- version="1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
- http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
- <portlet>
- <description>Hello World Portlet Description</description>
- <portlet-name>HelloWorldPortlet</portlet-name>
- <display-name>Hello World</display-name>
- <portlet-class>com.ccsee.portal.portlet.HelloWorldPortlet</portlet-class>
- <expiration-cache>-1</expiration-cache>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>VIEW</portlet-mode>
- </supports>
- <supported-locale>en</supported-locale>
- <portlet-info>
- <title>Hello World Portlet</title>
- <short-title>Hello Portlet</short-title>
- <keywords>Hello World</keywords>
- </portlet-info>
- </portlet>
- </portlet-app>
- 4.配置web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>HelloPortal</display-name>
- <servlet>
- <servlet-name>HelloWorldPortlet</servlet-name>
- <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
- <init-param>
- <param-name>portlet-name</param-name>
- <param-value>HelloWorldPortlet</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>HelloWorldPortlet</servlet-name>
- <url-pattern>/PlutoInvoker/HelloWorldPortlet</url-pattern>
- </servlet-mapping>
- </web-app>
- 5. 在 META-INF 下新建 context.xml 文件,内容如下:
- <Context path="/helloportal" docBase="HelloPortal" crossContext="true" />
- 示列部署
- 在 Eclipse 的 Servers 视图中,右键单击 Tomcat 服务器,点击 Add and Remove Projects,在弹出的对话框中将 HelloPortal 项目添加到右侧栏目中,点击 Finish 确认。
- 在 Servers 视图中启动服务器,Console 视图中输出 Tomcat 启动信息。
- 浏览器中输入相应 url 访问 pluto 的 portal 页面,登录,点击 Pluto Admin 导航栏
- 使用该工具新建一个 page,如 "HelloPortal"。导航栏中马上新增一项 "HelloPortal ",点击进入该页面可以见到目前该页面没有内容。
- 选择 HelloPortal应用程序中的 HelloWorldPortlet,选择上一步新建的页面,点击 Add Portlet 按钮,将 HelloWorldPortlet布局到 "HelloPortal" 页面。
- 进入 "HelloPortal" 页面,该页面新增了一个 Portlet,并打印出“Hello, This is the portal world!”。
- 本示列为一个极小的HelloWorld应用,旨在感性的认识Portlet的开发。示例中涉及的文件,仅仅四个:
- 1.HelloWorldPortlet.java
- 2.porlet.xml
- 3.web.xml
- 4.helloportal.xml
apache pluto 实践 DEMO
最新推荐文章于 2024-07-14 11:13:47 发布