2017-05-09 19 views
0

我试图从驻留在我的web.xml中的servlet init-params读取一些参数,并通过我的程序中的变量使它们可访问。我想我可以使用相当于HttpServlet的init()方法。JAX-RS中的Servlet init()方法

这个问题有一个解决方案: init method in jersey jax-rs web service

我认为第一个解决方案可能会为我工作,但问题是,ServletContextEvent只能访问在上下文param标签定义的paramters,我需要他们从我自己的servlet初始化-PARAMS值。

我不想将参数从我的servlet移动到context-param标记中,因为参数实际上只与特定的servlet有关。

有人能指出我正确的方向吗?

+1

我很困惑 - 为什么当JAX-RS服务不是servlet时有Servlet init params?通常,一个servlet不能访问另一个servlets init-params。 – stdunbar

+0

@stdunbar我在说我正在使用JAX-RS API。我正在使用jax-rs的泽西岛实施。 –

+0

@stdunbar JAX-RS通常作为servlet(或servlet过滤器)运行 –

回答

1

使用Jersey,所有init-params都可以在Configuration对象中使用,您可以将其注入几乎任何地方;资源,过滤器等

@Path("test") 
public class SomeResource { 

    @Context 
    private Configuration configuration; 

    @GET 
    public String get() { 
     return (String) configuration.getProperty(InitParams.MY_INIT_PARAM); 
    } 
} 

另请参见:

+0

有什么方法可以在servlet启动时获得InitParams?我想只阅读一次,并通过公共变量使它们可访问。 –

+0

您可以在ResourceConfig子类构造函数中注入配置 –

+0

我收到警告:检测到未知的HK2故障 我已经注册了将ResourcecConfig作为javax.ws.rs.Application扩展到我的web.xml中的类。 不知道可能是什么问题。 完整日志https://pastebin.com/RP31S36E –