泽西网络服务,保持请求计数

时间:2015-03-24 15:44:12

标签: java web-services java-ee jersey jax-rs

我在Jersey Java应用程序中有这样的Web服务:

   @Singleton
   @Path("/root")
   public class MyWebService() {

    private int count;

    public MyWebService() {
        count=0;
    }

    @Path("/perf/request")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String getCount() {
        String out = "";
        count++;
        out = "Count is: " + out; 
        return out;
    }
   }

由于Jersey生命周期,每次调用服务时都会重新实例化该类(尽管有“@Singleton”注释),然后每次计数等于零时都会重新实例化。 有没有办法让这个类/字段静态,所以“count”字段不会被重置?

1 个答案:

答案 0 :(得分:1)

那应该完全奏效!根据文件:

  

在此范围内,每个jax-rs应用程序只有一个实例。   Singleton资源可以使用@Singleton及其注释   class可以使用Application实例注册。您可以   通过将单例实例注册到单元中来创建单例   应用

您是否在申请表中注册了课程?

public class MyApplication extends ResourceConfig {

    /*Register JAX-RS application components.*/
    public MyApplication () {
        register(MyWebService.class);
    }
}

您也可能导入了错误的注释类型。