2013-06-26 6 views
8

jerseyを使用してTomcatでwebappを作成しています。私はサーブレットを作成していない、私はちょうどジャージーServletContainerといくつかのリソースクラスを使用しています。jersey ServletContainerを使用しているときにweb.xmlから設定データを取得

私のweb.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5"> 
    <servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class> 
      com.sun.jersey.spi.container.servlet.ServletContainer 
     </servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.mycompany.myproduct.rest</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

私のWebアプリケーションは、いくつかの設定値を読み取る必要があります。

<web-app> 
    ... 
    <context-param> 
    <description>This is a context parameter example</description> 
    <param-name>ContextParam</param-name> 
    <param-value>ContextParam value</param-value> 
    </context-param> 
</web-app> 

はこれが最善の方法です:私はこのように、これを行うには良い方法は、コンテキストのparamsであるという印象を持っていますか?リソースクラスからこれらのコンテキストパラメータにアクセスするにはどうすればよいですか?ここで

は、例えば、リソースクラスです:

@Path("/api/ping") 
public class PingResource { 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String helloWorld() { 
     return "pong"; 
    } 
} 

答えて

10

あなたはServletContextを注入し、そこからパラメータを調べることができます。ような何か:

以下
public class PingResource { 

    @Context ServletContext context; 

    public String myServiceMethod() { 
     context.getInitParam("ContextParam"); 
    } 

} 
+0

web.xmlにコンテキストを追加します。しかし、私はそれがinitのparamを返すと仮定します。コンテキストパラメータはどうですか?私はServletContextからそれを取得する方法を見ていません。 – tallseth

+0

あまり...チェックアウトhttp://stackoverflow.com/questions/2069902/dd-elements-context-param-and-init-param-both-use-the-getinitparameter-me –

+0

私はこれを試しましたが、私はコンテキストはnullです。 – tallseth

4

私のために働いたスナップショットです:)

//輸入に

import javax.servlet.ServletContext; 
import javax.ws.rs.core.Context; 

を追加//あなたのクラスで

@Context 
ServletContext context; 

//をプロパティを追加メソッド内のコンテキストパラメータを使用する

String companyName = this.context.getInitParameter("companyName"); 

//これはよさそうだ

<context-param> 
    <description>Context Parameter Test</description> 
    <param-name>companyName</param-name> 
    <param-value>Test Organization, Incorporated</param-value> 
</context-param> 
関連する問題