Java EE를 처음 접했고 로컬 인터페이스 및 원격 인터페이스의 개념을 이해하려고합니다.
EJB 사양의 초기 버전에서 EJB는 "원격 구성 요소"라고 가정했으며,이를 호출하는 유일한 방법은 RMI 의미와 모든 오버 헤드 (모든 네트워크 호출 및 객체 직렬화)를 사용하여 원격 호출을하는 것입니다. 메소드 호출). EJB 클라이언트는 EJB 컨테이너와 동일한 가상 머신에 배치 된 경우에도이 성능 저하를 지불해야했습니다.
나중에 Sun은 대부분의 비즈니스 응용 프로그램이 실제로 다른 계층에 EJB를 배포하지 않는다는 것을 깨달았고 EJB 컨테이너를 사용하여 동일한 가상 시스템에 배치 된 클라이언트가 EJB 컨테이너를 사용하여 EJB를 호출 할 수 있도록 로컬 인터페이스 개념을 도입하여 사양을 수정했습니다 (EJB 2.0). 직접 메소드 호출, RMI 시맨틱 (및 관련 오버 헤드)을 완전히 무시합니다.
Java EE의 가장 큰 장점 중 하나는 확장이 쉽다는 것입니다 (다른 서버에 다른 구성 요소를 배포 할 수 있다고 생각합니다)
Java EE는 확장 할 수 있지만 반드시 컴포넌트 배포를 의미하지는 않습니다 . 웹 계층과 EJB 계층을 분리하지 않고 클러스터에서 Web + EJB 애플리케이션을 실행할 수 있습니다.
응용 프로그램의 서버마다 다른 구성 요소가있을 것으로 예상되는 경우 원격 인터페이스를 사용해야합니까? 응용 프로그램이 하나의 서버에만 상주 할 경우 로컬 인터페이스를 사용 하시겠습니까?
클라이언트가 동일한 JVM에 있지 않으면 원격 인터페이스를 사용하십시오 (단 하나의 서버 / JVM 만 사용하는 것은 아닙니다).
(...) 로컬 인터페이스를 사용하여 시작하고 적용 가능한 경우 점차 원격 인터페이스로 업그레이드합니까?
아마도 로컬 인터페이스를 사용하여 시작할 것입니다. 이미 암시 한 것처럼 원격 인터페이스로 전환하는 것이 항상 필수는 아닙니다 ( 배치 된 구조를 클러스터링 할 수 있음 ).
아래 언급 된 리소스를 확인하는 것이 좋습니다 (첫 번째 2 개는 꽤 오래되었지만 여전히 관련이 있으며 2 개는 더 최신입니다).
자원