日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 终于成功地在Pluto中部署了一个Portlet了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開源的工程就是懶,Apache的Pluto是一個簡單的符合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:
<?xml?version="1.0"?encoding="UTF-8"?>
<!DOCTYPE?web-app?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"
?????????????????????????"http://java.sun.com/dtd/web-app_2_3.dtd"
>
<web-app?id="WebApp">
????
<display-name>HelloWorld?Web?Application</display-name>
????
<servlet>
????????
<servlet-name>HelloWorldPortlet</servlet-name>
????????
<display-name>HelloWorldPortlet?Wrapper</display-name>
????????
<description>Automated?generated?Portlet?Wrapper</description>
????????
<servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
????????
<init-param>
????????????
<param-name>portlet-guid</param-name>
????????????
<param-value>HelloWorld.HelloWorldPortlet</param-value>
????????
</init-param>
????????
<init-param>
????????????
<param-name>portlet-class</param-name>
????????????
<param-value>com.ibm.spc.HelloWorldPortlet</param-value>
????????
</init-param>
????
</servlet>
????
<servlet-mapping>
????????
<servlet-name>HelloWorldPortlet</servlet-name>
????????
<url-pattern>/HelloWorldPortlet/*</url-pattern>
????
</servlet-mapping>
????
<taglib>
????????
<taglib-uri>http://java.sun.com/portlet</taglib-uri>
????????
<taglib-location>/WEB-INF/tld/portlet.tld</taglib-location>
????
</taglib>
????
<taglib>
????????
<taglib-uri>http://java.sun.com/portlet</taglib-uri>
????????
<taglib-location>/WEB-INF/tld/portlet.tld</taglib-location>
????
</taglib>
</web-app>
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>A?simple?HelloWorld?portlet</description>
????????
<description?xml:lang="en">A?simple?HelloWorld?portlet</description>
????????
<portlet-name>HelloWorldPortlet</portlet-name>
????????
<display-name>HelloWorld?portlet</display-name>
????????
<display-name?xml:lang="en">HelloWorld?portlet</display-name>
????????
<portlet-class>com.ibm.spc.HelloWorldPortlet</portlet-class>
????????
<init-param>
????????????
<name>wps.markup</name>
????????????
<value>html</value>
????????
</init-param>
????????
<expiration-cache>0</expiration-cache>
????????
<supports>
????????????
<mime-type>text/html</mime-type>
????????????
<portlet-mode>view</portlet-mode>
????????
</supports>
????????
<supported-locale>en</supported-locale>
????????
<resource-bundle>com.ibm.spc.nl.HelloWorldPortletResource</resource-bundle>
????????
<portlet-info>
????????????
<title>HelloWorld?portlet</title>
????????
</portlet-info>
????
</portlet>
</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鏈接,點擊后可以看到

注意修改portlet類、配置等,可能都需要重啟Pluto(其實也就是Tomcat)服務器。這樣之后如果通過訪問servlet的方式來訪問portlet:http://localhost:8080/HelloWorld/HelloWorldPortlet,應該會得到一個空頁面。就是說我所知道的訪問測試Portlet方式就是通過這個地址了http://localhost:8080/pluto/portal/HelloWorld。

總結

以上是生活随笔為你收集整理的终于成功地在Pluto中部署了一个Portlet了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。