현재 JBoss 5.0에서 실행되는 공통 서비스에 액세스하는 여러 웹 응용 프로그램이 있습니다. 이 서비스는 Guice와 POJO를 사용하여 매우 간단합니다. 웹 응용 프로그램은 인증을 받았으며 사용자가 누구이며 역할이 무엇인지 알 수 있습니다. 서비스를 호출 할 때 어떻게이 인증 정보를 서비스에 전달해야합니까?Java의 응용 프로그램 계층간에 주체/주체/역할을 어떻게 전달해야합니까?
간단한 접근 방식은 인터페이스에 매개 변수를 추가하여 사용자 정보를 가져 오는 것입니다. 가능하게 주제. 그러나 이것은 현재 진행중인 작업과 관련이없는 상황 별 정보로 인터페이스를 혼란시키는 단점이 있습니다.
void doSomething(Subject subject, ...) {
}
내가 본 대안은, ThreadLocal를 저장을 사용하여 전화를하기 전에 거기에 사용자 정보를 넣어 서비스를 사용할 수있는 몇 가지 유틸리티 클래스를 통해이 액세스 할 수 있도록하는 것입니다. 이것은 인터페이스를 정리하지만 호출하기 전에 서비스 클라이언트가 사용자 정보를 설정해야한다는 사실을 숨 깁니다.
다른 방법이 있습니까? 나는 AOP가 여기에서도 사용할 수 있다는 느낌을 갖지만 어떻게 볼 수는 없다. 제가 실종시킨 "모범 사례"가 있습니까? EJB가 도움이 될까요?
난 이후이 문제를 해결 [아파치 시로 (http://shiro.apache.org)을 가로 질러왔다. 방법을 잘 모르지만 그럴 수 있습니다. – pauli