简体   繁体   中英

Jersey REST Server: instantiating resource classes

A tutorial on the Jersey REST server [1] says of the Jersey servlet:

This servlet analyzes the incoming HTTP request and selects the correct class and method to respond to this request. This selection is based on annotations in the class and methods.

When the servlet "selects the correct class and method", does it re-instantiate the class every time? Or does it keep one instance of every resource class?

This would seem to matter because, if these resources classes have references to objects that store application-wide state, these state objects would be re-instantiated along with the resources, and would not end up storing state data correctly.

[1] http://www.vogella.com/articles/REST/article.html#restjersey

Jersey will establish a new instance of each class per request unless you annotate the class with @Singleton .

See: https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2331

Actually according to this post default annotation type is change from singleton to per-request. Which means before one instance is used for every request but now create new class object for per-request. If you postwant to change it you can use resourceFactory annotation.

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ResourceFactory(SingletonProvider.class)
public @interface Singleton {}

Also you can check this link for com.sun.jersey.spi.resource JavaDoc

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM