Glassfish 3.1.1
Джерси 1,8
У меня есть следующий сессионный компонент без сохранения состояния, представленный как ресурс JAX-RS. VehicleResource содержится в WAR, а другие EJB - в EJB-JAR. Все приложение упаковано и развернуто как EAR.
@Stateless
@Path("/")
@DeclareRoles({"production"})
public class VehicleResource {
private static final Logger logger = Logger.getLogger(VehicleResource.class.getName());
private static final long serialVersionUID = 1L;
@Context
private UriInfo uriInfo;
@EJB
private VehicleManagementLocal vehicles;
@EJB
private VehicleAliases aliases;
....
У меня есть клиент из Джерси, который отправляет запросы в отдел обслуживания. Сессия создается для каждого запроса. Это нормально / ожидается? При большом количестве запросов серверу быстро не хватает памяти. Почему это происходит, и есть ли какие-либо изменения конфигурации / кода, которые я могу внести, чтобы предотвратить новый сеанс для каждого запроса?
Редактировать
На самом деле создается только один экземпляр сессионного компонента. Я моделирую нагрузку, многократно нажимая URI. Я изменил время ожидания сеанса до 5 минут (с 30). Сеансы теперь истекают и могут быть собраны сборщиком мусора достаточно быстро, чтобы не допустить исчерпания памяти на сервере. «Веб-контейнер: статистика сеансов» в разделе мониторинга Glassfish показывает, что у меня ~ 50 000 активных сеансов.