2013-09-22 3 views
0

ejb와 함께 사용되는 클라이언트라는 단어를 읽을 때마다 클라이언트로 간주되는 것을 이해하지 못합니다.ejb 클라이언트의 수명은 얼마입니까?

ejb의 경우 클라이언트의 수명은 얼마입니까? jndi 나 injection과 같은 빈 참조를 얻는 방법에 따라 다릅니다.

http 세션에 정렬되어 있습니까? 그렇다면 jndi와 어떤 관련이 있습니까?

참조가 획득되는 방식에 따라 클라이언트 대화가 언제 시작하여 ejb로 끝나나요?

java ee 7 컨테이너에서 호출되는지 여부에 따라 달라 지나요?

편집 : 더 구체적으로해야합니다. 상태 유지 세션 bean은 상태를 유지하지만 어떤 컨텍스트에서 어느 정도까지는 상태가 유지됩니다. 예를 들어 참조를 얻은 경우 해당 참조에 의해서만 작성된 호출간에 상태가 유지됩니까?

또한 세션의 개념과 모든 유형의 ejbs에서 고유 클라이언트를 어떻게 고려합니까? 내가 당신에게 EJB (심지어 깊은하지 않은 경우) 작업에서 오는 이것에 대해 내 의견을 제시하려고합니다, 나는 다른 사용자의 건설적인 피드백을하고 싶은

답변

2

세션 빈의 클라이언트는 (주입 또는 JNDI 조회를 통해) 세션 빈에 대한 참조를 얻는 모든 객체입니다. 클라이언트 수명은 참조 된 세션 빈에 의존하지 않습니다. 클라이언트는 자체적으로 어떻게 든 관리되는 라이프 사이클을 가지며 세션 빈은 독립적 인 자체 라이프 사이클을가집니다. 세션 빈의 라이프 사이클은 그 타입에 달려있다.세션 빈은 세 가지 유형이 있습니다.

빈 수명주기는 매우 간단합니다. 단 하나의 빈은 앱의 전체 수명에서 인스턴스화됩니다.

@Stateful 빈은 클라이언트가 살아있을 때만 수명하므로 수명이 다양합니다. 퍼시베이션 메커니즘 때문에 기술적으로 사실이 아니지만 개발자의 관점에서 볼 때 사실이라고 가정 할 수 있습니다.

응용 프로그램 서버는 배치시 @Stateless 빈 풀을 작성합니다. 생성 된 인스턴스는 여러 클라이언트에 분산되어 여러 클라이언트에서 여러 번 재사용됩니다. 여기에서 중요한 것은 오직 하나의 클라이언트 만이 빈 인스턴스를 사용할 수 있다는 것입니다.

1

:-)

감사합니다. Session에는 ejb 세션과 "others"(클라이언트) 세션이라는 두 가지 종류가 있습니다. 클라이언트는 사용자가 제공 한 원격 인터페이스를 조회하고 사용하는 엔티티 (어쩌면 로컬 인터페이스)를 의미하며이 경우 클라이언트와 ejb는 동일한 JVM에서 실행됩니다.

ejb 세션은 EJB 컨테이너가 관리하는 세션을 의미합니다. Statefull ejb가 조회되어 생성 될 때 세션이 시작되는지 여부는 문제가되지 않습니다. 물론 이것은 서버 측에서 발생합니다. ejb에는 세션 기간에 주석을 달기위한 특정 방법이 있습니다. 이 세션이 만료 된 후에는 더 이상 EJB의 인스턴스에 접근 할 수 없으므로 클라이언트 측에서 서버의 어떤 내용에 대한 참조가 더 이상 존재하지 않습니다.

다른 측면에서 보면 클라이언트는 EJB 세션과 독립적 인 자체 세션을 가지고 있습니다. EJB가 클라이언트의 로그인을 관리하고 있고, ejb 시간이 초과되면 클라이언트가 더 이상 로그되지 않는다고 가정 해 봅시다. 그러나 이것이 클라이언트 세션이 시간 초과되었다는 의미는 아닙니다. 세션이 길어질 수도 있습니다.

프리젠 테이션 레이어와 로직 레이어로 2 티어 아키텍처를 생각해보십시오. 자체 세션 개념을 가진 jsf를 통한 프리젠 테이션 및 자체 세션 관리가있는 다른 서버의 EJB를 통한 로직.

두 세션이 서로 관련 되길 원하지만 서로 다릅니다. ejb 타임 아웃시 http/Servlete 세션의 만료를 관리 할 수 ​​있지만 두 가지 다른 상황에 있고 서로 다른 두 가지 상황에 관련됩니다.

관련 문제