제11장 EJB 클라이언트

내용 목차

11.1. 개요
11.2. EJB 접근을 위한 클라이언트 프로그래밍
11.3. InitialContext 설정
11.3.1. JVM 속성을 이용한 Naming 속성값 설정
11.3.2. Hashtable을 이용한 Naming 속성 설정

본 장에서는 EJB 클라이언트 프로그램밍 예제와 InitialContext 설정 방법에 대해 설명한다.

EJB 클라이언트는 EJB 엔진에서 deploy된 EJB 컴포넌트의 업무 로직을 호출하는 모든 종류의 애플리케이션을 일컫는다. 그러므로 EJB 클라이언트는 서블릿, 애플릿, 다른 EJB, Standalone Java 프로그램 등이 이에 속한다.

여기서는 Standalone Java 프로그램으로 EJB 클라이언트를 작성하고 실행할 때 기본적으로 필요한 정보를 제공한다.

다음은 "HelloApp"라는 export name을 갖는 EJB를 찾고 sayHello() 메소드를 호출하는 일반적인 클라이언트 애플리케이션의 구현을 보여주는 예제이다.


Initialcontext는 JNDI namespace의 모든 명명된 객체를 찾을 때 사용하는 객체로 EJB를 사용할 때마다 필요한 중요 컴포넌트이다.

EJB에서는 이 객체를 사용하여 EJB 엔진의 실제 Bean Instance의 Reference를 찾는다. JEUS의 InitialContext Instance를 가져오기 위해서는 InitialContext를 얻기 전에 5개의 Naming Context 속성 중 적어도 1개는 지정해야 클라이언트 애플리케이션이 JEUS Naming Service Server(JNSServer)와 통신할 수 있다.

JNDI InitialContext 객체가 JVM의 "-D" 속성(권장사항)이나 EJB 클라이언트 코드의 Hashtable를 통해 설정되는 것을 살펴보고 각각의 경우 EJB 클라이언트를 어떻게 호출하는지 설명한다.

다음은 JEUS에서 지원하는 InitialContext 객체를 얻기 전에 설정해야 할 5개의 Naming Context 환경 속성이다.

위에서 설명한 속성들은 JVM interpreter의 "-D" 스위치를 사용하여 설정할 수 있다. 이 스위치들은 EJB 클라이언트 애플리케이션을 시작하기 위해 사용하는 Java 명령어에 추가해야 한다.

다음은 각 Naming 속성이 "-D" 스위치로 설정하는 예이다.

다음의 예제는 클라이언트를 호출할 때 "-D" 옵션을 사용하여 EJB 클라이언트의 Naming Context를 설정하는 것이다. 'user1'이라는 사용자명과 'password1'이라는 패스워드가 192.168.10.10 주소로 등록된 JEUS Naming Server를 이용하여 EJB Stub을 찾는 EJB 클라이언트에 어떻게 사용되는지를 보여준다.

$ java -classpath
      ${JEUS_HOME}/lib/client/jclient.jar
      -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory
      -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url
      -Djava.naming.provider.url=192.168.10.10
      -Djava.naming.security.principal=user1
      -Djava.naming.security.credentials=password1
      HelloClient

참고

JEUS에 deploy한 EJB가 2.x 스타일인 경우에는 별도로 클라이언트용 라이브러리를 가지고 있어야 한다. 이 라이브러리는 보통 appcompiler로 EJB를 컴파일할 때 생성할 수 있다.

클래스 FTP 서버를 사용한다면 클라이언트가 자동으로 필요한 클래스들을 다운받아서 사용한다. EJB 3.0 이상인 경우에는 이 사항을 고려할 필요가 없다.