24.4.7 javax.servlet.ServletContext

javax.servlet.ServletContextはServlet 3.0仕様で定義されているクラスです。

ルートリソースクラスのフィールドにインジェクトされる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"という値が取得されます。