使用 XML 小服務程序配置文件配置小服務程序 這種替代的小服務程序配置方法涉及到創建一個 XML 小服務程序配置文件(該配置文件是一個 XML 文檔,它的名稱為 servlet_instance_name.servlet),它包括:
小服務程序類文件的文件名 小服務程序說明 小服務程序初始化參數 包含小服務程序可以調用的 JavaServer Pages(JSPs)的 URL(統一資源定位器)的頁面列表。該頁面列表可以包括一個缺省頁面、一個出錯頁面、一個或多個已裝入的目標頁面(如果它們的名稱出現在 HTTP 請求中)。 在 Application Server 版本 3 中,.servlet 文件存儲在應用程序的類路徑中。
當 Application Server 接收到一個對小服務程序實例的請求時,它將在其 .servlet 文件中獲得該小服務程序的配置信息。為了調用 JSP,XML 小服務程序配置文件的 page-list 元素和 PageListServlet 類(將在下一章節中討論)消除對所調用 JSPs 的 URL 硬編碼。如果引用的頁面發生更改時,您只需更新 .servlet 文件,而無需更新小服務程序代碼和重新編譯該小服務程序。每當 .servlet 文件發生更改時,Application Server 就會自動裝入此小服務程序實例。
WebSphere Application Studio 提供了用于生成小服務程序的向導。這些向導為每個 Studio 生成的小服務程序創建一個 XML 小服務程序配置文件(即 .servlet 文件)。如果您不能訪問 Studio,并且希望手工實現 XML 小服務程序配置,則請:
創建一個擴展 PageListServlet 類的小服務程序。 使用 XMLServletConfig類創建小服務程序實例的 XML 小服務程序配置文件 展開經編譯的小服務程序及其 XML 小服務程序配置文件于 Application Server 上。 使用 PageListServlet 類 PageListServlet 是小服務程序的超級類,這些小服務程序裝入 XML 小服務程序配置文件的 <page-list> 元素中包含的頁面。該頁面列表使您能避免對所調用 JSP 的 URI 進行硬編碼。該列表可以包含一個缺省頁面、出錯頁面和其它根據 HTTP 請求而調用的 JavaServer Page。
PageListServlet 包含一種 callPage() 方法,該方法調用了一個 JavaServer Page,并將其作為對頁面列表中某個頁面的 HTTP 請求的響應。當輸入 XML 配置文件的 page-list 元素中的頁面名稱時,PageListServlet.callPage() 方法接收 HttpServletRequest 對象和 HttpServletResponse 對象。
調用 PageListServlet.callPage() 方法后并不退出。緊跟 callPage() 方法調用之后的所有小服務程序代碼將在調用后運行。當您架構您的小服務程序代碼時請考慮這一點。
SimplePageListServlet 是一個擴展 PageListServlet 類和使用其 callPage() 方法來調用 JSP 的小服務程序示例:
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 類創建 XML 小服務程序配置文件(servlet_instance_name.servlet)。如下為一個配置文件:
<?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 配置文件的基本元素。每個 XML 配置文件必須是良好格式的 XML 文檔。這些文件未根據文檔類型定義(DTD)進行驗證。
為了使 Application Server 能使用 XML 小服務程序配置文件裝入小服務程序實例,該配置文件中至少必須包含 code 元素。對于 PageListServlet,XML 配置文件則至少必須包含 code 元素和 page-list 元素。雖然其中沒有 DTD,但仍建議按元素在示例中顯示的順序來顯示所有元素。這些元素(也稱為標記)為:
servlet 基本元素。該元素是由 XMLServletConfig 類自動生成的。
code 小服務程序(無 .class 擴展名)的類名, 即使該小服務程序位于 JAR 文件中
描述 用戶定義的小服務程序描述
init-parameter 該元素的屬性指定了一個作為初始化參數的“名稱-值”對。一個小服務程序可以有多個初始化參數,每個參數都有它自己的 init-parameter 元素。
page-list 它根據 HTTP 請求中的路徑信息來標識要調用的 JavaServer Page。page-list 元素可以包含下列子元素:
default-page:如果 HTTP 請求中未包含路徑信息,那么該元素中會包含一個 uri 元素,此元素指出了裝入頁面的位置 error-page:如果 handleError() 方法將請求屬性設置為“error”,那么該元素中會包含一個 uri 元素,此元素指出了裝入頁面的位置 page:如果 HTTP 請求中包含了頁面名稱的話,那么該元素中會包含一個 uri 元素,此元素指出了要裝入頁面的位置。一個 page-list 元素中可以包含多個 page 元素。 您可以編寫一個使用 XMLServletConfig 類來生成小服務程序配置文件的 Java 程序。XMLServletConfig 類提供了關于設置和獲取文件元素及其內容的方法。
展開服務器上的小服務程序和 .servlet 文件 為了在 Application Server 上使用經編譯的小服務程序和其 XML 小服務程序配置文件:
將經編譯的小服務程序和其 .servlet 文件放置在應用程序類路徑中。如果該小服務程序有一個軟件包名,請確保該小服務程序被放置在該類路徑的正確子目錄下。 請確保在頁面列表中引用的 JavaServer Page(JSP 文件)位于該應用程序的文檔根目錄中。
|