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