我是使用 Java 进行 Web 开发的新手。我正在开发一个 Web 服务,我为此选择了 REST / Jersey。
我想在服务启动时初始化一些东西,并在服务的整个生命周期中保持它们。
第一个问题:Jersey Servlet 的构造函数是做这件事的好地方吗?
基本上,我想做的是加载位于我的 WEB-INF 目录中的 config.ini 文件。按照这个帮助,我知道我需要一个ServletContext来将我的文件作为资源加载。
但是,我不清楚如何在Jersey Servlet 中获取此ServletContext,因为它实际上并不是 servlet 的实例,而是带有一些注释的 POJO。我想试试这个技巧,但构造函数中的属性“context”为空。我认为Jersey可能会在构造函数之后填充它。正确的 ?
那么正确的方法是如何做到这一点的呢?
到目前为止,这是我的代码:
/** Main REST servlet */
@Path("/")
public class Servlet {
// ----------------------------------------------------
// Constants
// ----------------------------------------------------
static private final String CONFIG_PATH = "/WEB-INF/config.ini";
// ----------------------------------------------------
// Attributes
// ----------------------------------------------------
/** Context */
@Context ServletContext context;
// ----------------------------------------------------
// Constructor
// ----------------------------------------------------
/** Init the servlet */
public Servlet() {
// Load config.ini from WEB-INF
Config.config = new Config(
this.context.getResourceAsStream(CONFIG_PATH));
// FAIL! this.context is null ...
}
// ----------------------------------------------------
// URI Handlers
// ----------------------------------------------------
/** Welcome page */
@GET
@Path("/")
@Produces(MediaType.TEXT_HTML)
public String welcome() {
return "<h1>Hi there.</h1>";
}
}
任何帮助将非常感激。提前致谢,
拉斐尔