В нашем проекте мы реализовали несколько REST-сервисов, используя Spring @RestController
.Проблема в том, что когда я тестирую их с помощью REST-клиента, в заголовке ответа существует JSESSIONID
, поэтому я считаю, что сервер создает HTTPSession
для каждого запроса, но службы не сохраняют состояние и им не требуется HTTPSession
.
Есть ли способ предотвратить создание новых сессий на этих контроллерах?
Это источник RestController
@RestController
@RequestMapping("/customs/customs")
public class CustomsRestController {
@Autowired
private CustomsWebService customsWebService;
@Autowired
private CustomsSecurityContextInitializer securityContextInitializer;
@RequestMapping(path = "/customsPorts", method = RequestMethod.GET,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Collection<CustomsPort> getActiveCustomsPorts() {
try {
securityContextInitializer.initSecurityContext();
return customsWebService.getActiveCustomsPorts();
} finally {
securityContextInitializer.clearSecurityContext();
}
}
@RequestMapping(path = "/registerCustomsRequest", method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public CustomsDeclarationInfo registerCustomsRequest(@RequestBody CustomsDeclarationRequest requestKey) {
try {
securityContextInitializer.initSecurityContext();
requestKey.validate();
return customsWebService.registerCustomsRequest(requestKey);
} catch (BusinessException e) {
return CustomsDeclarationInfo.builder().errorMessage(e.getMessage()).build();
} finally {
securityContextInitializer.clearSecurityContext();
}
}
}