2013-06-26 21 views
8

Tomcat'te jersey kullanarak bir webapp oluşturuyorum. Bir Servlet oluşturmadım, sadece jarse ServletContainer ve bazı Kaynak sınıflarını kullanıyorum.Bir forma kullanırken web.xml dosyasından yapılandırma verileri alın ServletContainer

Benim 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> 

Benim Webapp bazı yapılandırma değerlerini okumak gerekiyor.

<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> 

bu en iyi yolu mu: Bunu yapmak için iyi bir yol bu gibi bağlama parametreleri içeren olduğunu izlenimi var? Bu içerik params'larına kaynak sınıflarımdan nasıl erişebilirim?

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

cevap

10

Sen ServletContext enjekte ve oradan parametrelerini bakabilirsiniz:

İşte bir örnek kaynak sınıfı. Bir şey gibi:

public class PingResource { 

    @Context ServletContext context; 

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

} 
+0

web.xml için ekleyin. Ama ben bir init param geri döndürdüğünü varsayalım. Bir bağlam paramına ne dersin? ServletContext'ten nasıl elde edeceğimi anlamıyorum. – tallseth

+0

Pek yok ... http://stackoverflow.com/questions/2069902/dd-elements-context-param-and-init-param-both-use-the-getinitparameter-me –

+0

Bunu denedim ama bağlam boş. – tallseth

4

Aşağıda

// Sınıfınızla

@Context 
ServletContext context; 

tesisle eklemek // ithalatı karşılama

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

eklemek benim :) çalıştı enstantanesidir // İçindekiler bağlamında bağlam parametresini kullanın

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

// bağlam Bu iyi görünüyor

<context-param> 
    <description>Context Parameter Test</description> 
    <param-name>companyName</param-name> 
    <param-value>Test Organization, Incorporated</param-value> 
</context-param>