终于成功地在Pluto中部署了一个Portlet了

  开源的工程就是懒, ApachePluto是一个简单的符合 JSR168规范的Portlets容器,网站上寥寥数笔,很多东西都没说清楚,连个API参考文档都找不到。甚至到现在从源代码来编译也没成功!只好用网站上提供的二进制版本(因为Pluto是借助Tomcat服务器的,这样原来的安装的一个Tomcat只好停掉)。Pluto本身不足以用来创建门户(Portal)网站,但可以用来测试自己的Portlet。
  由于项目要求,需要做一个Portlet放在门户网站来展示我们的功能方便演示。虽然感觉并不复杂,但毕竟没做过,一切都得从头学起。有道是万事开头难,虽然IBM又有一篇入门文章——“ Hello World,一个简单的JSR 168 portlet”,从该网页下载了一个 HelloWorld.zip,但涉及文件和操作过多,使人不知道到底自己创建一个Portlet要从何做起。经过了一番摸索,终于成功地在Pluto中部署了这个Portlet,下面以这个HelloWorld为例,说说另外要注意的重点,希望对和我一样的初学者有所帮助(可以先下载该文件,按需要解压出相应文件和目录):
  1、对于初学者,使用Deploy很容易失败,各种原因都会导致部署不成功(比如这个HelloWorld中说的部署过程,因为jar文件与pluto1.0.1-rc2不一致就会出现很多类没有找到的错误,使部署过程失败)。所以我们直接在<pluto_home>\webapps目录中创建一个常规的Web应用程序,比如叫HelloWorld目录,里面还要有WEB-INF目录,该目录下还有web.xml和portlet.xml。
web.xml:
None.gif <? xml version="1.0" encoding="UTF-8" ?>
None.gif
<! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
None.gif                         "http://java.sun.com/dtd/web-app_2_3.dtd"
>
None.gif
< web-app  id ="WebApp" >
None.gif    
< display-name > HelloWorld Web Application </ display-name >
None.gif    
< servlet >
None.gif        
< servlet-name > HelloWorldPortlet </ servlet-name >
None.gif        
< display-name > HelloWorldPortlet Wrapper </ display-name >
None.gif        
< description > Automated generated Portlet Wrapper </ description >
None.gif        
< servlet-class > org.apache.pluto.core.PortletServlet </ servlet-class >
None.gif        
< init-param >
None.gif            
< param-name > portlet-guid </ param-name >
None.gif            
< param-value > HelloWorld.HelloWorldPortlet </ param-value >
None.gif        
</ init-param >
None.gif        
< init-param >
None.gif            
< param-name > portlet-class </ param-name >
None.gif            
< param-value > com.ibm.spc.HelloWorldPortlet </ param-value >
None.gif        
</ init-param >
None.gif    
</ servlet >
None.gif    
< servlet-mapping >
None.gif        
< servlet-name > HelloWorldPortlet </ servlet-name >
None.gif        
< url-pattern > /HelloWorldPortlet/* </ url-pattern >
None.gif    
</ servlet-mapping >
None.gif    
< taglib >
None.gif        
< taglib-uri > http://java.sun.com/portlet </ taglib-uri >
None.gif        
< taglib-location > /WEB-INF/tld/portlet.tld </ taglib-location >
None.gif    
</ taglib >
None.gif    
< taglib >
None.gif        
< taglib-uri > http://java.sun.com/portlet </ taglib-uri >
None.gif        
< taglib-location > /WEB-INF/tld/portlet.tld </ taglib-location >
None.gif    
</ taglib >
None.gif
</ web-app >
None.gif
portlet.xml:
None.gif <? xml version="1.0" encoding="UTF-8" ?>
None.gif
< 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" >
None.gif    
< portlet >
None.gif        
< description > A simple HelloWorld portlet </ description >
None.gif        
< description  xml:lang ="en" > A simple HelloWorld portlet </ description >
None.gif        
< portlet-name > HelloWorldPortlet </ portlet-name >
None.gif        
< display-name > HelloWorld portlet </ display-name >
None.gif        
< display-name  xml:lang ="en" > HelloWorld portlet </ display-name >
None.gif        
< portlet-class > com.ibm.spc.HelloWorldPortlet </ portlet-class >
None.gif        
< init-param >
None.gif            
< name > wps.markup </ name >
None.gif            
< value > html </ value >
None.gif        
</ init-param >
None.gif        
< expiration-cache > 0 </ expiration-cache >
None.gif        
< supports >
None.gif            
< mime-type > text/html </ mime-type >
None.gif            
< portlet-mode > view </ portlet-mode >
None.gif        
</ supports >
None.gif        
< supported-locale > en </ supported-locale >
None.gif        
< resource-bundle > com.ibm.spc.nl.HelloWorldPortletResource </ resource-bundle >
None.gif        
< portlet-info >
None.gif            
< title > HelloWorld portlet </ title >
None.gif        
</ portlet-info >
None.gif    
</ portlet >
None.gif
</ portlet-app >
web.xml中servlet的描述很重要,一定要映射servlet,还有要加portlet-guid这一个值(其实这些是在deploy时会自动做的,但我们不使用deploy就只好手工改了)。否则在运行时就会出现常见的NullPointerException异常:
2005-5-13 20:32:12 org.apache.pluto.portalImpl.services.log.LoggerImpl error
严重: Error in Portlet
java.lang.NullPointerException
        at org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:109)
……
这个问题在Apache的MailList一直有人问,大部分可能都是这个问题。
   编译好portlet后,放好目录(WEB-INF\classes下)。
  2、修改<pluto_home>\webapps\pluto\WEB-INF\data下的pageregistry.xml、portletcontexts.txt、portletentityregistry.xml三个文件,这里可以按照 http://portals.apache.org/pluto/install.html中Installing Portlets部分做,也可以参照pageregistry.xml、portletentityregistry.xml两个文件中现有的一个test portlet的写法改。还记得要在portletcontexts.txt中加上Web应用程序的目录“\HelloWorld”。
  3、最后,在Pluto上 http://localhost:8080/pluto/portal页面左侧就可以看到一个HelloWorld链接,点击后可以看到
pluto.gif
注意修改portlet类、配置等,可能都需要重启Pluto(其实也就是Tomcat)服务器。这样之后如果通过访问servlet的方式来访问portlet: http://localhost:8080/HelloWorld/HelloWorldPortlet,应该会得到一个空页面。就是说我所知道的访问测试Portlet方式就是通过这个地址了 http://localhost:8080/pluto/portal/HelloWorld
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值