2012-11-28 4 views
2

관리 bean에는 필드가 있으며 필드에는 getter와 setter가 있습니다. 그러나이 경우 Notes 프로필 문서에 값을 다시 저장해야합니다. 그래서 loadProfileDocumentsaveProfileDocument 방법이 있습니다. 응용 프로그램 범위에서 빈을 사용하려고 생각했습니다.관리 bean을 notes 문서에 저장

프로필 문서가 저장되었는지 어떻게 확인합니까?

세터로부터 saveProfileDocument으로 전화해야합니까? saveProfileDocument()으로 명확하게 전화하나요? 소멸자 (finalize)를 사용할 수 있습니까? 또는 무엇을 ... ??? ...

+7

웹 응용 프로그램에서 프로필 문서를 사용하는 것이 좋은지 잘 모르겠습니다. 다른 HTTP 엔진 스레드는 다른 버전의 프로파일 문서를 캐시 할 수 있으므로 최신 프로파일 문서 데이터가 있는지 여부는 알 수 없습니다. 이것은 오래된 Lotus 웹 앱의 문제점이었고, XPages 앱에는 여전히 문제가 있다고 생각합니다. 대신에 일반 문서를 사용해야합니다. –

+0

스벤이 문제는 여전히 xPages 환경에 존재합니다. 정상적인 노트 문서를 사용하는 것이 가장 좋습니다. – jjtbsomhorst

답변

2

bean의 상태를 문서의 MIME 항목에 직렬화하는 소위 "MIMEBean"접근법을 사용하는 것이 좋습니다. 이 방법을 사용하면 각 객체가 직렬화 될 수있는 한 빈 필드를 계층 구조 (객체 내의 객체 내의 객체)로 만들 수 있습니다. 이것은 하나의 필드가 하나의 프리미티브 값 (또는 값의 벡터) 인 일반적인 플랫 데이터 구조보다 훨씬 더 많은 유연성을 제공합니다.

OpenNTF에서 WatrCoolr 프로젝트의 출처를 조사하면 응용 프로그램에서 광범위하게 사용되는이 접근 방식의 예를 확인할 수 있습니다.

제시 갤러거 (Jesse Gallagher)도이 기술을 다소 투명하게 사용할 수있는 custom data source을 만들었습니다.

1

프로필 문서를 사용하지 마십시오. @Sven Hasselbach가 언급했듯이, HTTP 작업의 모든 스레드는 프로필 문서의 자체 캐시 복사본을 가지며 (프로필은 설계 상 캐시됩니다) 한 스레드의 저장이 다른 스레드로 채워지지 않습니다. 일반적으로 엉망을 수정하려면 HTTP 작업을 다시 시작해야합니다.

질문에 답하려면 업데이트 빈도를 결정해야합니다. 단일 속성을 수시로 업데이트하면 setter에서 호출 된 저장이 좋은 선택입니다. 여러 속성/필드를 일괄 적으로 업데이트하는 경우 동일한 접근 방식이 잘못 수행 될 수 있습니다.

빈 상태를 백엔드 문서에 조건부로 저장하려면 setter에서 더티 플래그를 설정하고 afterRenderResponse에서 save 메서드를 호출하는 것이 좋습니다. 요청 범위 Bean의 경우 더티 플래그를 지울 필요가 없습니다. 다른 범위는 저장 후 재설정하는 것을 잊지 않기 때문입니다.

관련 문제