Spring Session JDB C, репликация сессий в нескольких приложениях - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь внедрить 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);
...