- 浏览: 69712 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
yl23250:
C:\Documents and Settings\db2ad ...
用 Apache James 搭建邮件服务器来收发邮件实践(一) -
qidongting:
非常不错,对于初学者来说节省很多摸索时间,后续希望楼主能分享实 ...
JBoss JBPM 实践系列(二)--- jbpm设计器的配置和使用 -
qidongting:
你好,谢谢你的分享,按照你的步骤目前部署成功,但是后台报个错误 ...
JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + MySQL 5.1) -
li370036149:
zhanghuang0713 写道大家好:在我用开发的过程中, ...
JMail 应用实践(一)--- 简介用Java程序发送email -
javasocool:
没吃过猪肉,还没见过猪跑
设计模式感悟(一)--- 程序员修炼上乘之道
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
花了一个下午写了这篇文档,本来是图文并茂的,谁知从word中沾过来,图片都消失了。格式也乱了,稍微整理了一下,在此抛砖引玉,期望跟大家一起进步。
概述
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
花了一个下午写了这篇文档,本来是图文并茂的,谁知从word中沾过来,图片都消失了。格式也乱了,稍微整理了一下,在此抛砖引玉,期望跟大家一起进步。
- HelloPortal.rar (5.6 KB)
- 描述: HelloPortal 项目源文件
- 下载次数: 672
评论
7 楼
wsrenwei
2009-03-19
你的QQ是多少啊?
6 楼
huangwwjp@126.com
2008-09-22
警告: Couldn't find a PageConfig for page ID: [/h]
2008-9-22 9:44:40 org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl isPortletModeSupportedByPortlet
信息: Portlet mode 'edit' not found for portletId: '/HelloPortal.HelloWorldPortlet!510736053|2'
2008-9-22 9:44:40 org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl isPortletModeSupportedByPortlet
我是根据你的步骤做下来的,但是得不到结果,怎么解决这个问题呢?谢谢
2008-9-22 9:44:40 org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl isPortletModeSupportedByPortlet
信息: Portlet mode 'edit' not found for portletId: '/HelloPortal.HelloWorldPortlet!510736053|2'
2008-9-22 9:44:40 org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl isPortletModeSupportedByPortlet
我是根据你的步骤做下来的,但是得不到结果,怎么解决这个问题呢?谢谢
5 楼
dwr
2008-09-07
谢谢:)虽然在windows下报错,但换成了ubuntu却部署成功。
4 楼
zhaipuhong
2008-09-06
你换pluto-1.1.4吧,我今天整了一个上午1.1.6,错误跟你一样的,但是官方的说明也都是针对pluto-1.1.4的。用对比软件看了半天也没看出个苗头来。你先用pluto-1.1.4吧。
其实几种方式,结果是一样的,你重点最好是掌握手工安装部署,这个是根本,工具和插件毛病多多,整死人
其实几种方式,结果是一样的,你重点最好是掌握手工安装部署,这个是根本,工具和插件毛病多多,整死人
3 楼
dwr
2008-09-05
你好,我按照和你一样的步骤直接下载最新版的二进制版本成功运行pluto,但是用第二种方法由源代码构建pluto时总是失败,报错信息:Error loading supplemental data models: String index out of range: -1在网上搜不到什么相关有用的信息,不知道怎么排查这个问题,你能帮我看看吗?
我的环境配置是:windows xp sp2
JAVA_HOME=D:\JAVA\jdk1.6.0
M2=%M2_HOME%\bin
M2_HOME=D:\JAVA\apache-maven-2.0.9
Path=......;%M2%
我将pluto-current-src.zip解压缩至 C:\pluto-1.1.6
然后在cmd下进入C:\pluto-1.1.6\mvn install
下面是输出:
C:\pluto-1.1.6>mvn install
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] Apache Pluto
[INFO] Pluto Descriptor Service API
[INFO] Pluto Descriptor Service Implementation
[INFO] Pluto Portlet Container
[INFO] Pluto Portlet Tag Library
[INFO] Pluto Portal Driver
[INFO] Pluto Portal Driver Implementation Classes
[INFO] Pluto Portal
[INFO] Pluto Utilities
[INFO] Maven Pluto Installer Plugin
[INFO] Pluto Testsuite Portlet
[INFO] Pluto Ant Tasks
[INFO] Pluto Website Skin
[INFO] ------------------------------------------------------------------------
[INFO] Building Apache Pluto
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing C:\pluto-1.1.6\pom.xml to C:\Documents and Settings\yun\.m2\re
pository\org\apache\pluto\pluto\1.1.6\pluto-1.1.6.pom
[INFO] ------------------------------------------------------------------------
[INFO] Building Pluto Descriptor Service API
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus
.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [remote-resources:process {execution: default}]
[ERROR] Error loading supplemental data models: String index out of range: -1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1938)
at org.codehaus.classworlds.UrlUtils.normalizeUrlPath(UrlUtils.java:28)
at org.codehaus.classworlds.DefaultClassRealm.getResource(DefaultClassRe
alm.java:284)
at org.codehaus.classworlds.RealmClassLoader.getResource(RealmClassLoade
r.java:237)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
at org.codehaus.plexus.resource.loader.ThreadContextClasspathResourceLoa
der.getResourceAsInputStream(ThreadContextClasspathResourceLoader.java:56)
at org.codehaus.plexus.resource.DefaultResourceManager.getResourceAsInpu
tStream(DefaultResourceManager.java:77)
at org.codehaus.plexus.resource.DefaultResourceManager.getResourceAsFile
(DefaultResourceManager.java:117)
at org.apache.maven.plugin.resources.remote.ProcessRemoteResourcesMojo.l
oadSupplements(ProcessRemoteResourcesMojo.java:724)
at org.apache.maven.plugin.resources.remote.ProcessRemoteResourcesMojo.e
xecute(ProcessRemoteResourcesMojo.java:290)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:451)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:558)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
fecycle(DefaultLifecycleExecutor.java:499)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:478)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:330)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:291)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:142)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error loading supplemental data models: String index out of range: -1
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Fri Sep 05 16:24:47 CST 2008
[INFO] Final Memory: 14M/25M
[INFO] ------------------------------------------------------------------------
我的环境配置是:windows xp sp2
JAVA_HOME=D:\JAVA\jdk1.6.0
M2=%M2_HOME%\bin
M2_HOME=D:\JAVA\apache-maven-2.0.9
Path=......;%M2%
我将pluto-current-src.zip解压缩至 C:\pluto-1.1.6
然后在cmd下进入C:\pluto-1.1.6\mvn install
下面是输出:
C:\pluto-1.1.6>mvn install
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] Apache Pluto
[INFO] Pluto Descriptor Service API
[INFO] Pluto Descriptor Service Implementation
[INFO] Pluto Portlet Container
[INFO] Pluto Portlet Tag Library
[INFO] Pluto Portal Driver
[INFO] Pluto Portal Driver Implementation Classes
[INFO] Pluto Portal
[INFO] Pluto Utilities
[INFO] Maven Pluto Installer Plugin
[INFO] Pluto Testsuite Portlet
[INFO] Pluto Ant Tasks
[INFO] Pluto Website Skin
[INFO] ------------------------------------------------------------------------
[INFO] Building Apache Pluto
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing C:\pluto-1.1.6\pom.xml to C:\Documents and Settings\yun\.m2\re
pository\org\apache\pluto\pluto\1.1.6\pluto-1.1.6.pom
[INFO] ------------------------------------------------------------------------
[INFO] Building Pluto Descriptor Service API
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus
.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [remote-resources:process {execution: default}]
[ERROR] Error loading supplemental data models: String index out of range: -1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1938)
at org.codehaus.classworlds.UrlUtils.normalizeUrlPath(UrlUtils.java:28)
at org.codehaus.classworlds.DefaultClassRealm.getResource(DefaultClassRe
alm.java:284)
at org.codehaus.classworlds.RealmClassLoader.getResource(RealmClassLoade
r.java:237)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
at org.codehaus.plexus.resource.loader.ThreadContextClasspathResourceLoa
der.getResourceAsInputStream(ThreadContextClasspathResourceLoader.java:56)
at org.codehaus.plexus.resource.DefaultResourceManager.getResourceAsInpu
tStream(DefaultResourceManager.java:77)
at org.codehaus.plexus.resource.DefaultResourceManager.getResourceAsFile
(DefaultResourceManager.java:117)
at org.apache.maven.plugin.resources.remote.ProcessRemoteResourcesMojo.l
oadSupplements(ProcessRemoteResourcesMojo.java:724)
at org.apache.maven.plugin.resources.remote.ProcessRemoteResourcesMojo.e
xecute(ProcessRemoteResourcesMojo.java:290)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:451)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:558)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
fecycle(DefaultLifecycleExecutor.java:499)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:478)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:330)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:291)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:142)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error loading supplemental data models: String index out of range: -1
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Fri Sep 05 16:24:47 CST 2008
[INFO] Final Memory: 14M/25M
[INFO] ------------------------------------------------------------------------
2 楼
zhaipuhong
2008-07-08
兼容性确实太差,在Java 6u10b 环境编译,放到Java 5u10 就报Class Version之类的错误,甚至用Java 5u1b 环境编译,放到Java 5 u10都一样不兼容,报同样的错误。不过当作一个验证Java Portlet Special 的容器他确实有他的轻巧之处。先不说Tomcat 本身小巧,就是你所需要做的工作,仅仅是在web.xml加一些和portlet.xml中portlet对应的servlet配置而已。还是比较方便的容器。
1 楼
spiritfrog
2008-07-08
以前也试过Apache Pluto作为测试用portlet容器,可惜兼容性不太好, 一些jsr-168的portlet发布之后提示不可用。只好远程到ibm portal上去发布和测试了。
相关推荐
2. **创建portlet项目**:使用你喜欢的IDE(如Eclipse或IntelliJ IDEA),创建一个新的Maven项目,选择portlet相关的依赖库,如`javax.portlet-api`和`portlet-container-api`。 3. **编写portlet类**:在项目中...
4. **LICENSE.portlet-api**: Portlet API是portlet开发的关键接口,定义了portlet与portlet容器之间的交互方式。此文件包含了API的许可信息。 5. **project.properties**: 这是项目的属性文件,可能包含了构建路径...
4. 配置文件:如`portlet-tomcat-config.xml`等,用于配置Pluto容器的行为和设置。 5. 执行脚本:启动、停止和管理Pluto容器的脚本,通常包括批处理文件(Windows)和shell脚本(Unix/Linux)。 在开发portlet应用...
Apache Pluto Portal 是一个开源的portlet容器,它是Java Portlet Specification的实现,允许开发者构建和部署portlet应用程序。本文档主要针对Apache Pluto Portal的学习,适合初学者。Portlet是一种Web应用程序...
3. **portlet-class** - 通常是一个实现了Portlet接口的类,这是portlet的核心,处理portlet生命周期中的各种事件。 4. **struts actions** - 实现业务逻辑的Struts2 Action类。 5. **jsp views** - 视图层,通常...
- **Pluto介绍**:Pluto是Apache软件基金会下的一个开源项目,它是Java Portlet规范的参考实现,用于托管和管理Portlets。Pluto提供了一个标准的环境,让开发者可以测试和部署Portlet应用。 - **容器功能**:Pluto...
Pluto是Apache Software Foundation提供的一个开源portlet容器,它实现了这些标准,允许开发者创建和管理portlet。myeclipse6是一个强大的Java集成开发环境(IDE),支持包括portlet在内的多种Web应用程序的开发。而...
- portlet-api-1.0.jar 对于Tomcat 5.5,这些文件应放入<TOMCAT_HOME>/shared/lib;而对于Tomcat 6.0,它们应该在<TOMCAT_HOME>/lib。 **步骤2:处理兼容性问题** 为了确保在Java 1.4环境下运行Pluto 1.1.4,你...
### Maven + Pluto 2.0 搭建 Portlet 环境 #### 环境准备 在开始搭建 Portlet 2.0 模拟环境之前,我们需要确保以下环境已经准备好: 1. **Sun JDK 1.5 以上版本**(推荐使用 1.7 或更高版本)。 2. **Apache ...
WebSphere是IBM提供的一个企业级门户解决方案,而Apache Pluto是Jakarta Portal的参考实现,二者都提供了一个良好的环境供开发和测试Portlet应用。 ### Portlet独有概念 Portlet有很多独有概念,如Portlet URL,...
<portlet-app> <!-- Portlet定义 --> </portlet-app> ``` 2. **struts.xml**:这是Struts2的核心配置文件,位于`src/main/resources/META-INF`目录下。该文件定义了Action映射、拦截器配置、结果类型等,对于...
- Apache Pluto是另一个流行的开源Portal平台,相较于IBM的产品,它更加轻量级。 - 搭建Pluto环境相对简单,只需要下载并部署到支持的Web服务器或应用服务器上即可。 - 对于开发人员而言,Pluto提供了一套易于使用的...
2. **Pluto配置**:介绍如何配置Apache Pluto以支持UTF-8,包括修改`portlet-container.xml`和其他相关配置文件。 3. **portlet开发中的中文处理**:讲解在portlet开发中,如何确保内容正确渲染,包括在JSP、Servlet...
- **参考实现:**Apache Pluto。 - **核心功能:**定义了一套API,用于规范Portlets的开发与门户之间的互操作性。 - **与WSRP 1.0的关系:**与Web Services for Remote Portlets (WSRP) 1.0规格紧密相连。 **...
要开始学习portlet开发,首先你需要一个支持portlet的开发环境,如IBM WebSphere Portal Server、Liferay Portal、Apache Pluto等。这些平台提供了portlet容器,可以托管和管理portlet。同时,你还需要一个Java集成...
<portlet-app version="1.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
- **Pluto简介**:介绍了Pluto作为一个开源Portlet容器的基本情况。 - **特点优势**:分析了Pluto相对于其他容器的优点。 #### 7.2 Portlet容器架构 - **架构组成**:详细解释了Portlet容器的架构组成。 - **工作...
开发portlet可以使用Eclipse IDE搭配portlet插件,或者使用Maven或Gradle这样的构建工具配合portlet-maven-plugin或gradle-portlet-plugin。这些工具可以帮助开发者自动化构建、测试和部署portlet。 7. **portlet...