3

嗨,我正在使用 GigaSpaces XAP,它基本上使用 Spring 和 ApplicationContext 来完成它的所有初始化和配置等......在加载 Web 应用程序期间的某个时间点,“缓存”或他们所谓的空间代理被实例化并通过 ServletContext 提供。这个空间代理允许您在集群缓存中写入和读取。

所以我最初做的是在每个 REST 方法上获得空间。所以...

@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 容器是 Jetty 7.1.4,我正在使用标准 WAR 进行部署。

4

1 回答 1

0

但是当然!System.out.println("是你的朋友!")

是的,这是因为 @Scope("request") 更改为 @Scope("singleton") 导致球衣“bean”实例化一次而不是每个请求。

于 2010-11-23T21:17:04.187 回答