jboss 配置上下文路径_JBoss Portal上的“ Hello World” portlet
jboss 配置上下文路徑
Portlet概述
本教程將向您展示如何創建和部署簡單的Portlet。 Portlet是基于Java技術的Web組件,可以處理請求并生成動態內容。 Portlet不是自治實體,但是由Portlet容器管理,Portlet容器為Portlet執行提供了必要的運行時環境。 應該注意的是,單個門戶可以托管多個portlet容器。 Portlet的生命周期由容器控制,這對于將請求委派給適當的已部署Portlet也很重要。
Portlet和Servlet緊密相關,Portlet規范借鑒了先前定義的Servlet規范。 實際上,Portlet應用程序本質上是Web應用程序的擴展,并且Portlet和Servlet可以組合在同一Web應用程序中。
Portlet可以具有各種模式,這些模式可以由用戶通過門戶網站提供的導航控制器(通常是按鈕)進行控制。 共有三種標準模式(盡管門戶供應商可以提供其他自定義模式作為專有擴展):
- 視圖 :這是Portlet的常規顯示,也是最常用的一種。
- 編輯 :在此模式下,用戶可以配置提供自己偏好的portlet(有助于實現個性化)。
- 幫助 :顧名思義,此模式用于向用戶提供幫助。
安裝JBoss Portal
在本教程中,我們選擇使用Red Hat提供的門戶實現JBoss Portal ,這也為我們提供了著名的JBoss應用服務器。 正如您將在官方頁面上看到的那樣,所有開發工作現在都針對GateIn ,這是eXo和JBoss門戶之間的協作。 但是,JBoss門戶肯定非常健壯和穩定,與以下兩個原因相比,我更喜歡GateIn:
- 外觀更好的界面和更好的Portlet呈現
- 簡化管理,配置和管理
無論如何,所有門戶中的安裝/部署過程都應該相同。
可以在這里下載JBoss門戶,它有兩種形式:
- JBoss門戶二進制文件 :僅JBoss門戶組件,捆綁為服務檔案(SAR)文件。
- JBoss Portal + JBoss AS 4.2.3 :已經部署了門戶的典型JBoss應用服務器。
由于很可能已經部署了JBoss AS,因此我選擇了第一個選項,因此將門戶二進制文件用作外部應用程序。 下載ZIP文件后,解壓縮其內容。 可以在其中找到文件夾“ jboss-portal.sar”,您必須將其復制到“ / server / default / deploy /”目錄中。
此步驟之后,必須設置門戶網站數據庫的數據源。 在“ jboss-portal-2.7.2 / setup”文件夾中,對于所有常用的DBMS,可以找到許多數據源聲明。 出于開發目的和快速入門, HSQLDB是必經之路。 因此,將文件“ portal-hsqldb-ds.xml”復制到“ / server / default / deploy /”目錄中以設置數據源。
現在我們已經準備好,啟動JBoss服務器,并在其啟動并運行后,您將能夠通過以下URL訪問門戶:
http:// localhost:8080 / portal /
您應該能夠看到以下屏幕:
注意:JBoss門戶在部署期間會加載很多類,由于永久生成空間有限,您可能會遇到OutOfMemory錯誤。 如果是這種情況,您將發現服務器沒有響應,并且將出現以下錯誤消息:
“ java.lang.OutOfMemoryError:PermGen空間”
要解決此問題,請編輯啟動腳本(對于Windows為run.bat,對于Linux為run.conf),并在JVM參數中添加以下參數:
-XX:MaxPermSize = 512m
重新啟動服務器以應用更改。
創建portlet項目
讓我們繼續以名稱“ HelloWorldPortletProject”創建一個新的Eclipse項目。 為了開始構建Portlet,我們需要訪問Portlet API。 必要的庫可以在Portlet規范站點上找到 。 下載“ portlet.jar”文件并將其添加到項目的類路徑中。 另外,請確保將“ Portlet API Javadocs”頁面添加為書簽。
我們將創建的類將直接擴展GenericPortlet類,該類為Portlet接口提供默認實現。 唯一的功能是在重寫的render方法內提供的 ,此方法由portlet容器調用以允許portlet根據其當前狀態生成響應的內容。 該方法的參數是RenderRequest對象和RenderResponse對象, RenderRequest對象表示發送到Portlet以處理渲染的請求, RenderResponse對象定義一個對象以幫助Portlet向門戶發送響應。
這是該類的代碼:
package com.javacodegeeks.portlets;import java.io.IOException; import java.io.PrintWriter;import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse;public class HelloWorldPortlet extends GenericPortlet {@Overridepublic void render(RenderRequest req, RenderResponse res) throws PortletException, IOException {res.setContentType("text/html");PrintWriter writer = res.getWriter();writer.println("Hello World!");writer.flush();}}如您所見,Java Servlet API有許多相似之處。 我們可以設置響應的Content-Type(在本例中為text / html),并從響應中獲取PrintWriter,以便將數據發送回客戶端。
為了將該portlet部署到容器,我們需要將其捆綁在Web Archive(WAR)文件中。 同樣,該過程類似于servlet世界中使用的過程,因此部署描述符的一個關鍵組成部分。 描述符名為“ portlet.xml”,它提供有關Portlet名稱,實現類,支持的MIME類型和支持的視圖的聲明。 這是我們的portlet的簡單描述符:
<?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.xsdhttp://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"><portlet><description xml:lang="en">A Hello World Portlet</description><portlet-name>HelloPortlet</portlet-name><display-name xml:lang="en">Hello World</display-name><portlet-class>com.javacodegeeks.portlets.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</title><short-title>Hello</short-title><keywords>portlet, hello, world</keywords></portlet-info></portlet></portlet-app>除了portlet的描述符之外,還必須提供經典的“ web.xml”。 可以使用它來定義servlet或偵聽器等。在我們的情況下,它將為空:
<?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></web-app>為了使WAR生成過程自動化,我創建了一個簡單的ANT腳本,可以從Eclipse內部調用該ANT腳本,以構建項目并提供可交付結果。
<?xml version="1.0" encoding="UTF-8" ?><project default="main" basedir="."><property name="bin" value="bin" /><property name="src" value="src" /><property name="dist" value="dist" /><property name="war" value="war" /><target name="main"><mkdir dir="${dist}"/><war destfile="${dist}/helloworld-portlet.war" webxml="${war}/WEB-INF/web.xml"><zipfileset dir="${war}/WEB-INF" prefix="WEB-INF"/><classes dir="${bin}"/></war></target></project>執行構建腳本,如果一切正常,則應該在“ dist”文件中找到一個名為“ helloworld-portlet.war”的WAR文件。 將文件復制到“ / server / default / deploy /”目錄中。 將會出現類似于以下內容的一行,表明該Portlet和Web應用程序已成功部署:
[TomcatDeployer]部署,ctxPath = / helloworld-portlet,warUrl =…/ tmp / deploy / tmp404700420646853190helloworld-portlet-exp.war /
使portlet可用
最后一步是實際使已部署的Portlet可用。 點擊主屏幕右上方的“登錄”鏈接,并使用“ admin / admin”默認憑據以管理員身份登錄。 成功登錄后,請訪問“管理”鏈接,該鏈接指向以下URL:
http:// localhost:8080 / portal / auth / portal / admin
您將看到以下管理頁面:
點擊“ Portlet定義”選項卡,并在其他已部署的Portlet中搜索我們的“ Hello World” Portlet。 然后點擊頁面右側的“創建實例”鏈接。
接下來,為新實例提供一個名稱,例如“ HelloWorldInstance”,然后單擊按鈕以創建它。
然后將為您提供portlet詳細信息,如下圖所示:
請注意,Portlet的詳細信息在很大程度上取決于我們通過“ portlet.xml”描述符提供的配置。
最后,我們必須將剛創建的Portlet實例與儀表板相關聯。 點擊右上方屏幕上的“儀表板”鏈接或訪問以下URL:
http:// localhost:8080 / portal / auth / dashboard
請注意,這與管理員的儀表板相對應,并且當前僅托管默認的portlet。 然后,點擊“配置信息中心”鏈接或訪問以下URL:
http:// localhost:8080 / portal / auth / configure?editPageSelect = default&action = 2
將出現“個人儀表板編輯器”,您應該看到一個列表,其中包含所有可用的Portlet實例,并可以選擇將其包括在特定儀表板的中央或左側區域中。 單擊“ HelloWorldInstance”文本,然后單擊兩個可用區域之一的“添加”按鈕。
現在,我們已經添加了Portlet,并且如果我們再次訪問儀表板頁面(http:// localhost:8080 / portal / auth / dashboard),我們應該看到以下圖像:
我們的“ Hello World”已成功包含在主頁中。 與往常一樣,可以在此處找到創建的Eclipse項目。
翻譯自: https://www.javacodegeeks.com/2010/10/hello-world-portlet-jboss-portal.html
jboss 配置上下文路徑
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的jboss 配置上下文路径_JBoss Portal上的“ Hello World” portlet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache lucene_Apache
- 下一篇: 西安建筑科技大学研究生招生(西安建筑科技