2014-03-04 3 views
0

다음과 같이 디자인 문제가 있습니다. 각 응답이 전자에 따라 달라지는 몇 가지 SOAP 웹 서비스를 실행하려고합니다. 모든 응답을 얻었 으면 획득 한 모든 데이터의 유효성을 검사 한 다음이를 기반으로 일부 출력을 빌드하고 DB 업데이트로도 발행하려고합니다.자동 웹 서비스에서 상태를 유지하는 방법은 무엇입니까?

따라서 나는 실행될 모든 웹 서비스를 포장하는 TemplateFacade 메서드를 만들었습니다. 문제 : 분명히 메서드 호출간에 응답을 유지해야합니다. autowired 서비스가 정의에 따라 무국적이어야하며 싱글 톤이어야하므로 문제가 될 것입니다.

그래서 어떤 종류의 상태 (적어도 Executor.execute()가 종료 될 때까지)를 유지해야하는 서비스를 주입에 사용할 수 있습니까?

더 나은 디자인 방식을 권장할까요?

답변

1

여러 웹 서비스간에 상태를 공유하려면 사용자와 연결된 세션에서 PersonState를 사용하여 추적 할 수 있습니다. 정보를 보호하기 위해 암호화 또는 해시를하는 것이 좋습니다.

유효성 검사가 완료되면 PersonState를 세션에 보관할 수 있습니다. buildOutput이 시작되면 PersonState 객체를 가져 와서 논리를 계속 수행 할 수 있습니다.

PersonState의 메모리 사용 공간을 줄이는 것이 중요합니다. 많은 양의 데이터가 있으면 다음 단계에 필요한 상태를 가질 stateObject를 만들 수 있습니다. 예 : 유효성 검사가 끝나면 BuildState 객체를 만들어 세션에 넣을 수 있습니다. 빌드는 세션에서 객체를 가져와 계속 진행합니다.

그러나 실제로 상태를 추적하고 2 개의 웹 서비스 호출에서 수행해야하는지 잘 모르겠습니다. 더 나은 솔루션은 모든 로직 부분을 다른 레이어로 이동하고 웹 서비스를 비즈니스/프로세스 계층의 창으로 사용하는 것입니다.

편집 : 당신을 일 각 단계의 응답이 다음 단계에 필요한 필요한 상태를 포함 할 수 있다는 것입니다 수

하나 개 더 솔루션입니다. 예 : validateResponse에는 personState가 포함되어있어 빌드를 위해 전달 될 수 있습니다.

관련 문제