2011-10-03 2 views
0

다른 Glassfish 서버의 한 Glassfish 서버 (프론트 엔드) 및 EJB 3.1 응용 프로그램 (백엔드)에 webapp가 있습니다. webapp은 원격 호출을 통해 EJB 3.1과 통신합니다.보안 목적을위한 EJB 3.1 제거 (ThreadLocal, ...)

각 비즈니스 운영의 입력 매개 변수로 정의하지 않고도 컨텍스트 데이터 (사용자 데이터)를 전달하고 싶습니다.

내가 한 생각을 가지고 있지만 확실하지가 작동합니다 : 데이터를 저장하는 의 ThreadLocal를 사용하지만 의 ThreadLocalInvocationContext 객체를 사용하여 하나 개의 서버 (의미 JVM) =>에서 사용할 수 것이다 인터셉터를 생성하여 사용자 데이터를 ContextData에 추가하십시오.

당신은 어떻게 생각하십니까? 다른 아이디어는 환영보다 더! ;-)

UPDATE

첫 번째 대답 후, 나는 그것을 조금 인터넷 검색 및 주석 @CallerPrincipal을 발견했다.

원격 호출 전에이 객체를 어떻게 설정할 수 있습니까?

답변

1

컨테이너가 이미 처리하므로 사용자가 직접 코딩 할 필요가 없습니다.

EJB에서 발신자 ID를 제공하는 getCallerPrincipal() 메소드가있는 EJBContext에 액세스 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 calle principal을 EJBContext에 "설정"할 수 있습니까? –

+0

웹 앱에서 사용하는 인증 메커니즘에 관계없이 설정됩니다. 로그인하면 컨테이너는 ID를 전달합니다. – Robin

관련 문제