我希望用Java实现一个非常简单的REST Web服务。这不是我的主要工作,所以对我来说一切都是新的。
我一直在研究Java和JAX-RS实现。它们看起来并不那么困难,但我无法理解服务的生命周期以及它是如何由Web服务器创建的。
我担心我的服务可能需要进行一些代价高昂的初始化,例如从文件或资源加载一堆设置数据以便能够处理请求。我不知道每次必须处理请求时是否希望它必须这样做。
所以,我的问题是,我服务的生命周期是多少?在响应请求之前,我可以从文件中为我的Web服务加载一堆参数吗?我需要加载的参数不会改变,并且对于所有请求都应该是相同的(因此,它是无状态的),但是我需要能够从某个地方加载该数据而我担心它会被强制执行它适用于每个请求。那么,我的Web服务可以“生存”还是被缓存,这样它只需要进行一次初始化,或者每个线程一次,但每次请求不需要一次?
编辑:我还没有决定使用哪个JAX-RS实现或者哪个服务器。我只是对这样一个事实感兴趣,它可以做到,如果它重要,我选择哪个实现。
答案 0 :(得分:3)
仅举一个使用Jersey的例子,它是JAX-RS的实现。根资源类的默认生命周期是每个请求按指定的here创建自己的实例。因此,如果您在服务中有一些初始设置,并且它们对于所有请求都是相同的,那么您可以将它们放在资源类的静态字段中并使用静态块来初始化它们,因为静态变量是基于每个类创建的。像这样:
private static MyParam params;
static {
params = new MyParam("/path/to/file/setup.conf");
}