代码之家  ›  专栏  ›  技术社区  ›  user432024

@在Jersey服务上始终调用Postconstruct方法

  •  3
  • user432024  · 技术社区  · 14 年前

    嗨,我正在使用GigaSpacesXAP,它基本上使用Spring和ApplicationContext来完成所有的初始化和配置等工作…在Web应用程序加载期间的某个时间点,将实例化一个“缓存”或它们所称的空间代理,并通过servletcontext使其可用。这个空间代理允许您在集群缓存中写入和读取数据。

    所以我最初做的是在每个休息方法上获得空间。所以…

    @GET
    public String myMethod()
    {
    space = (GigaSpace)context.getAttribute("mySpace");
    space.write(new HelloWorld());
    space.read(....);
    etc...
    return "Hello World!";
    }
    

    由于空间本身是线程安全的,GigaSpaces的工作人员指示我在“应用程序”的初始位置查找一次空间,这样我就可以节省查找空间的时间。

    所以我调查了一下 @PostConstruct 我在哪里…

    @PostConstruct
    public void init()
    {
    space = (GigaSpace)context.getAttribute("mySpace");
    }
    

    但似乎在我提出的每个请求上都调用了这个方法!这是否意味着正在为我提出的每个请求创建我的REST服务?是因为我在用 @Scope("request") ?

    如果它帮助servlet容器是Jetty7.1.4,并且我正在使用标准的war进行部署。

    1 回复  |  直到 6 年前
        1
  •  0
  •   user432024    14 年前

    但当然!system.out.println(“是你的朋友!”)

    是的,这是因为@scope(“request”)更改为@scope(“singleton”)会导致泽西岛的“bean”实例化一次,而不是每个请求。