2014-09-27 3 views
2

서비스를 구현하기 위해 Apache Axis2c 라이브러리 위에 구축 된 Staff Library을 사용하고 있습니다.이 서비스는 상태가 유지되지 않습니다.왜 'WSF Staff'웹 서비스 라이브러리가 "stateful"서비스를 명시 적으로 언급합니까?

서비스가 상태 유지인지 아닌지 (예 : "whether the interaction of client and server involves the server keeping track of the interaction-specific data as each subsequent interaction may depend upon the outcome of the previous interaction")는 서비스 아키텍처의 구현에 따라 결정됩니다.

나는 그것을 이해하므로, 나는 Stateless 서비스를 만들기 위해 Staff를 사용하는 것이 완벽하게 가능하다. 그런데 왜 'features' 페이지의 직원이 "상태 기반 웹 서비스 구현"을 명시 적으로 언급합니까? 스태프 도서관이 그 일을하는 것이 합리적일까요?

답변

1

어쩌면 실제로 상태가 좋지 않을 수도 있습니다.

"상태 저장"이라고하는 이유는 서버가 세션 당 서비스 인스턴스를 저장한다는 것입니다. 서비스는 로컬 데이터를 클래스 속성으로 저장할 수 있으며 세션 내에서 작업 할 때 동일한 데이터를 갖습니다.

Login 서비스가 제공하는 sessionId을 사용하여 로그인하면 서버는이 sessionId에 바인딩 된 (느리게) 서비스 인스턴스를 생성합니다. 따라서 두 개의 다른 세션에 대해 서로 다른 속성 값을 갖는 두 개의 서비스 인스턴스를 갖게됩니다. 이는 각 호출에서 초기화 할 수없고 파괴 할 수없는 대형 객체 (예 : 측지 정보 시스템)로 작업하는 경우 매우 유용합니다.

일반적으로 Stateless 웹 서비스 프레임 워크는 클라이언트 호출 당 서비스 인스턴스를 생성하며 공유 메모리 나 DBMS와 같은 일부 글로벌 메커니즘을 사용하고 특정 클라이언트를 구별하기 위해 일부 ID를 전달하는 경우를 제외하고는 로컬에 저장할 수있는 것이 없습니다.

+0

예, 저는 같은 줄을 꽤 생각하고있었습니다. 동료 중 하나가 나에게 지적했을 때 서비스 개체에 영구 멤버 변수를 추가 할 수 있다는 것을 발견했습니다. 따라서 의심스러운 것처럼, 영구적 인 멤버 변수를 사용하여 정보를 저장하지 않는 한 내 서비스 구현은 무 상태가됩니다. 대답 할 시간을내어 주셔서 감사합니다. – balajeerc