使用 XML 小服務(wù)程序配置文件配置小服務(wù)程序 這種替代的小服務(wù)程序配置方法涉及到創(chuàng)建一個(gè) XML 小服務(wù)程序配置文件(該配置文件是一個(gè) XML 文檔,它的名稱為 servlet_instance_name.servlet),它包括:
小服務(wù)程序類文件的文件名 小服務(wù)程序說明 小服務(wù)程序初始化參數(shù) 包含小服務(wù)程序可以調(diào)用的 JavaServer Pages(JSPs)的 URL(統(tǒng)一資源定位器)的頁(yè)面列表。該頁(yè)面列表可以包括一個(gè)缺省頁(yè)面、一個(gè)出錯(cuò)頁(yè)面、一個(gè)或多個(gè)已裝入的目標(biāo)頁(yè)面(如果它們的名稱出現(xiàn)在 HTTP 請(qǐng)求中)。 在 Application Server 版本 3 中,.servlet 文件存儲(chǔ)在應(yīng)用程序的類路徑中。
當(dāng) Application Server 接收到一個(gè)對(duì)小服務(wù)程序?qū)嵗恼?qǐng)求時(shí),它將在其 .servlet 文件中獲得該小服務(wù)程序的配置信息。為了調(diào)用 JSP,XML 小服務(wù)程序配置文件的 page-list 元素和 PageListServlet 類(將在下一章節(jié)中討論)消除對(duì)所調(diào)用 JSPs 的 URL 硬編碼。如果引用的頁(yè)面發(fā)生更改時(shí),您只需更新 .servlet 文件,而無需更新小服務(wù)程序代碼和重新編譯該小服務(wù)程序。每當(dāng) .servlet 文件發(fā)生更改時(shí),Application Server 就會(huì)自動(dòng)裝入此小服務(wù)程序?qū)嵗?
WebSphere Application Studio 提供了用于生成小服務(wù)程序的向?qū)А_@些向?qū)槊總(gè) Studio 生成的小服務(wù)程序創(chuàng)建一個(gè) XML 小服務(wù)程序配置文件(即 .servlet 文件)。如果您不能訪問 Studio,并且希望手工實(shí)現(xiàn) XML 小服務(wù)程序配置,則請(qǐng):
創(chuàng)建一個(gè)擴(kuò)展 PageListServlet 類的小服務(wù)程序。 使用 XMLServletConfig類創(chuàng)建小服務(wù)程序?qū)嵗?XML 小服務(wù)程序配置文件 展開經(jīng)編譯的小服務(wù)程序及其 XML 小服務(wù)程序配置文件于 Application Server 上。 使用 PageListServlet 類 PageListServlet 是小服務(wù)程序的超級(jí)類,這些小服務(wù)程序裝入 XML 小服務(wù)程序配置文件的 <page-list> 元素中包含的頁(yè)面。該頁(yè)面列表使您能避免對(duì)所調(diào)用 JSP 的 URI 進(jìn)行硬編碼。該列表可以包含一個(gè)缺省頁(yè)面、出錯(cuò)頁(yè)面和其它根據(jù) HTTP 請(qǐng)求而調(diào)用的 JavaServer Page。
PageListServlet 包含一種 callPage() 方法,該方法調(diào)用了一個(gè) JavaServer Page,并將其作為對(duì)頁(yè)面列表中某個(gè)頁(yè)面的 HTTP 請(qǐng)求的響應(yīng)。當(dāng)輸入 XML 配置文件的 page-list 元素中的頁(yè)面名稱時(shí),PageListServlet.callPage() 方法接收 HttpServletRequest 對(duì)象和 HttpServletResponse 對(duì)象。
調(diào)用 PageListServlet.callPage() 方法后并不退出。緊跟 callPage() 方法調(diào)用之后的所有小服務(wù)程序代碼將在調(diào)用后運(yùn)行。當(dāng)您架構(gòu)您的小服務(wù)程序代碼時(shí)請(qǐng)考慮這一點(diǎn)。
SimplePageListServlet 是一個(gè)擴(kuò)展 PageListServlet 類和使用其 callPage() 方法來調(diào)用 JSP 的小服務(wù)程序示例:
public class SimplePageListServlet extends com.ibm.servlet.PageListServlet { public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try{ setRequestAttribute("testVar", "test value", req); setRequestAttribute("otherVar", "other value", req);
String pageName = getPageNameFromRequest(req); callPage(pageName, req, resp); } catch(Exception e){ handleError(req, resp, e); } } }
使用 XMLServletConfig 類 使用 XMLServletConfig 類創(chuàng)建 XML 小服務(wù)程序配置文件(servlet_instance_name.servlet)。如下為一個(gè)配置文件:
<?xml version="1.0" ?> <servlet> <code>SimplePageListServlet</code> <description>Shows how to use PageListServlet class</description> <init-parameter name="name1" value="value2"/> <page-list> <default-page> <uri>/index.jsp</uri> </default-page> <error-page> <uri>/error.jsp</uri> </error-page> <page> <uri>/TemplateA.jsp</uri> <page-name>page1</page-name> </page> <page> <uri>templateB.jsp</uri> <page-name>page2</page-name> </page> </page-list> </servlet>
元素 <servlet> 是 XML 配置文件的基本元素。每個(gè) XML 配置文件必須是良好格式的 XML 文檔。這些文件未根據(jù)文檔類型定義(DTD)進(jìn)行驗(yàn)證。
為了使 Application Server 能使用 XML 小服務(wù)程序配置文件裝入小服務(wù)程序?qū)嵗撆渲梦募兄辽俦仨毎?code 元素。對(duì)于 PageListServlet,XML 配置文件則至少必須包含 code 元素和 page-list 元素。雖然其中沒有 DTD,但仍建議按元素在示例中顯示的順序來顯示所有元素。這些元素(也稱為標(biāo)記)為:
servlet 基本元素。該元素是由 XMLServletConfig 類自動(dòng)生成的。
code 小服務(wù)程序(無 .class 擴(kuò)展名)的類名, 即使該小服務(wù)程序位于 JAR 文件中
描述 用戶定義的小服務(wù)程序描述
init-parameter 該元素的屬性指定了一個(gè)作為初始化參數(shù)的“名稱-值”對(duì)。一個(gè)小服務(wù)程序可以有多個(gè)初始化參數(shù),每個(gè)參數(shù)都有它自己的 init-parameter 元素。
page-list 它根據(jù) HTTP 請(qǐng)求中的路徑信息來標(biāo)識(shí)要調(diào)用的 JavaServer Page。page-list 元素可以包含下列子元素:
default-page:如果 HTTP 請(qǐng)求中未包含路徑信息,那么該元素中會(huì)包含一個(gè) uri 元素,此元素指出了裝入頁(yè)面的位置 error-page:如果 handleError() 方法將請(qǐng)求屬性設(shè)置為“error”,那么該元素中會(huì)包含一個(gè) uri 元素,此元素指出了裝入頁(yè)面的位置 page:如果 HTTP 請(qǐng)求中包含了頁(yè)面名稱的話,那么該元素中會(huì)包含一個(gè) uri 元素,此元素指出了要裝入頁(yè)面的位置。一個(gè) page-list 元素中可以包含多個(gè) page 元素。 您可以編寫一個(gè)使用 XMLServletConfig 類來生成小服務(wù)程序配置文件的 Java 程序。XMLServletConfig 類提供了關(guān)于設(shè)置和獲取文件元素及其內(nèi)容的方法。
展開服務(wù)器上的小服務(wù)程序和 .servlet 文件 為了在 Application Server 上使用經(jīng)編譯的小服務(wù)程序和其 XML 小服務(wù)程序配置文件:
將經(jīng)編譯的小服務(wù)程序和其 .servlet 文件放置在應(yīng)用程序類路徑中。如果該小服務(wù)程序有一個(gè)軟件包名,請(qǐng)確保該小服務(wù)程序被放置在該類路徑的正確子目錄下。 請(qǐng)確保在頁(yè)面列表中引用的 JavaServer Page(JSP 文件)位于該應(yīng)用程序的文檔根目錄中。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!