serviceImpl은.. 스테이스풀 ?!
- 작성자 :
- 정*호
- 작성일 :
- 2013-04-16 17:58:13
- 조회수 :
- 1,068
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요.
serviceimpl을 두개의 단말기에서 호출을 합니다.
그런데 전역변수 값이 또 다른 단말기에서 보입니다.
스프링에서 관리하는 서비스(= ejb bean?!)는 모두 스테이스풀인가요?!
스테이스리스 형태로 성격을 바꿀 순 없나요?!
답변 부탁 드립니다.
serviceimpl을 두개의 단말기에서 호출을 합니다.
그런데 전역변수 값이 또 다른 단말기에서 보입니다.
스프링에서 관리하는 서비스(= ejb bean?!)는 모두 스테이스풀인가요?!
스테이스리스 형태로 성격을 바꿀 순 없나요?!
답변 부탁 드립니다.
A
안녕하세요.. 정연호님
기본적으로 spring bean은 stateful 합니다. 하지만.. singleton 특성으로 인하여 stateful하게 사용하지면 안됩니다.
특히 정보 보관을 위한 멤버변수를 사용하시는 경우 문제가 발생합니다. (웹 프로그램의 경우 thread 기반으기 때문에 간섭 현상 발생)
이 경우는 우선.. 멤버변수를 지역변수화 하시는 방법을 추천해 드립니다.
다른 방법은로는 spring bean들을 singleton이 아닌 prototype으로 변경하시면 사용될 때마다 새롭게 생성되어 사용되기 때문에 간섭되는 문제는 피하실 수 있습니다.
<bean id="..." class=".." scope="prototype" ../>
또는 annotation이실 떄에는 @Scope("prototype")를 클래스에 추가하시며 됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
기본적으로 spring bean은 stateful 합니다. 하지만.. singleton 특성으로 인하여 stateful하게 사용하지면 안됩니다.
특히 정보 보관을 위한 멤버변수를 사용하시는 경우 문제가 발생합니다. (웹 프로그램의 경우 thread 기반으기 때문에 간섭 현상 발생)
이 경우는 우선.. 멤버변수를 지역변수화 하시는 방법을 추천해 드립니다.
다른 방법은로는 spring bean들을 singleton이 아닌 prototype으로 변경하시면 사용될 때마다 새롭게 생성되어 사용되기 때문에 간섭되는 문제는 피하실 수 있습니다.
<bean id="..." class=".." scope="prototype" ../>
또는 annotation이실 떄에는 @Scope("prototype")를 클래스에 추가하시며 됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.