Я пытаюсь внедрить Spring Session JDB C при загрузке Spring в нескольких приложениях с одинаковой конфигурацией JDB C.
Намерение - 1 централизованный сеанс для нескольких приложений в архитектуре Microservice.
Я следую некоторому руководству и все в порядке.
Оба приложения работают в режиме REST и общаются через RESTTemplate.
Когда я пытаюсь вызвать второе приложение из моего 1-го приложения, установив Spring Sesson Файлы cookie при вызове REST.
При первом вызове приложения 2 не происходит сеанс. Но все последующие просьбы о получении сессии. Я посылаю сеансовый ключ так же, как и все.
List<String> cookies =new ArrayList();
Cookie[] cookies2 = request.getCookies();
for (int i = 0; i < cookies2.length; i++) {
String name = cookies2[i].getName();
String value = cookies2[i].getValue();
if("SESSION".equals(name)){
cookies.add(name+"="+value);
break;
}
}
System.out.println(request.getSession().getId());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
if(cookies.size()>0)
headers.set("Cookie",cookies.stream().collect(Collectors.joining("")));
String requestJson = "data="+objectMapper.writeValueAsString(user);
System.out.println(requestJson);
HttpEntity<String> entity = new HttpEntity<String>(requestJson,headers);
ResponseEntity<User> forEntity =restTemplate.exchange("http://SESSION-DATA-SERVICE/SessionService/sessionService/accountService",HttpMethod.POST,entity, User.class);