Метод @PostConstruct все время вызывается на сервисе Джерси - PullRequest
3 голосов
/ 23 ноября 2010

Привет! Я использую GigaSpaces XAP, который в основном использует Spring и ApplicationContext для выполнения всех операций инициализации, настройки и т. Д. В какой-то момент времени во время загрузки веб-приложения создается «кэш» или то, что они называют космическим прокси создается и становится доступным через 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")?

Если это помогает контейнер сервлетов - это Jetty 7.1.4, и я использую стандартную WAR для развертывания.

1 Ответ

0 голосов
/ 24 ноября 2010

Ну конечно же! System.out.println («Твой друг!»)

И да, это из-за того, что @Scope ("request"), изменяющийся на @Scope ("singleton"), заставляет экземпляр bean-компонента jersey один раз вместо запроса.

...