24.4.7 javax.servlet.ServletContext
javax.servlet.ServletContextはServlet仕様で定義されているクラスです。
ルートリソースクラスのフィールドにインジェクトされるjavax.servlet.ServletContextの使用例を次に示します。
package com.sample.resources; import javax.servlet.ServletContext; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Context; //ルートリソースクラス @Path("/root") public class Resource { //Contextアノテーションを使用してServletContextをインジェクトするフィールド private @Context ServletContext context; //リソースメソッド @GET public String getValue() { return this.context.getInitParameter("Hitachi"); } }
コンテキストスコープの初期化パラメタ(context-param要素)を含むweb.xmlを次に示します。
<?xml version="1.0" encoding="UTF-8"?> <web-app ...> ... <context-param> <param-name>TestParam</param-name> <param-value>TestValue</param-value> </context-param> </web-app>
ルートリソースクラスcom.sample.resources.Resourceを含むWebアプリケーション(WARファイル)のコンテキストルートが"example"で,Webアプリケーションが"sample.com"というホストで公開されているとします。この例で,URL"http://sample.com/example/root"に対するHTTP GETリクエストでは,まずcontextフィールドにjavax.servlet.ServletContextコンテキストがインジェクトされ,その後HTTP GETリクエストを処理できるgetValue()メソッドが呼び出されます。このため,getValue()メソッドでcontextはフィールドからコンテキストスコープの初期化パラメタ"TestParam"を取得すると"TestValue"という値が取得されます。