2012-08-14 2 views
1

보류중인 실행 목록을 세션 범위 Bean의 웹 응용 프로그램 내에서 사용자 작업의 컨텍스트에 저장하는 것이 안전합니까? @Predestroy 주석이 달린 메서드 (즉, @predestroy의 컨텍스트에서의 안전성)를 통해 세션이 끝날 때 안정적으로 해당 작업을 실행하십시오. 메서드가 호출되지 않는 & 따라서 일부 상황에서 실행되지 않는 동작 또는 이렇게!).@predestroy 메서드를 사용하여 세션 끝에서 보류중인 명령어를 실행 하시겠습니까?

+0

? 내 제목이 삭제되었다 인한되는 제출 '버튼을 누를 때 순간 나쁜 제목 오타 오류의 결과였다 –

+0

.. –

+0

@Juan을 : 질문 태그를보세요 – BalusC

답변

0

로직을 HttpSessionListener 구현 (인터페이스)으로 이동하는 것이 좋습니다. sessionDestroyed 이벤트를 트리거합니다 (구체적인 구현에서 해당 메서드를 구현하면됩니다).

이 종류의 것을 처리하는 데는 꽤 쉽고 사용하기 쉽습니다 (런타임시 제어 세션을 처리하기 위해 JMX bean으로 현재 제품에서 구현했습니다).

TIA

+0

'@ SessionScoped' 관리 빈의'@ Predestroy' 주석 메소드는 이미'HttpSessionListener # sessionDestroyed()'에 의해 호출 된 JSF 씬 뒤에 있습니다. 그래서 저는 그것을 자체 개발 방식으로 대체하는 것이 유용하고 "더 안전"하다는 것을 완전히 깨닫지 못합니다. – BalusC

+0

은 "더 안전하다"고 제안하지 않았으며 의미 적으로 목표로 삼았다.그렇습니다.이 고양이를 스킨하는 방법은 여러 가지가 있지만, 세션을 파괴하는 동안 특정 행동/aspect를 트리거하는 것이 특별히 흥미 롭기 때문에, 그 행동을 목표로하는 bean에 로직을 넣는 것이 더 합리적 일 수 있습니다. 콜백이 "정상 작동"동안 불필요한 다른 bean/resources를 필요로한다면, 세션을 파괴 할 때 사용할 수 있도록 주입하면 빈의 오염이 될 수 있습니다. 다시 말하지만, 코드를 보여주지 않고 요약서에 무게를 달아야합니다. – him

0

그것은 대기중인 실행을 저장하는 완전히 안전 또는 DB는 @PreDestroy 방법에 커밋합니다. 이 상태에서 Managed Bean은 파기되지 않습니다. 따라서 관리 Bean의 상태는 Bean 내부의 일반적인 메소드 호출과 동일합니다. 아래의 설명서를 참조하십시오.

http://docs.oracle.com/javaee/6/tutorial/doc/gmgkd.html#gmghg

"관리 빈의 파괴에 대한 준비 @PreDestroy 주석 를 사용하여 관리되는 콩의 파괴를 준비하려면 응용 프로그램 구성 요소가 파괴 될 예정임을 신호 라이프 사이클 콜백 방법을 지정합니다

관리 Bean 클래스 또는 해당 상위 클래스의 경우 이 방법에서는 Bean이 삭제되기 전에 필요한 정리 (예 : 자원 해제)를 수행하십시오. 콩이 잡고 있다고.

메소드의 선언에 javax.annotation.PreDestroy 주석을 주석으로 지정하십시오. CDI는 빈을 파괴하기 시작하기 전에이 메소드를 호출합니다. "이 무엇 언어