JNDI Lookup을 위한 JNDI 서비스 정의방법
클라이언트 코드에서 JNDI 트리의 객체를 액세스할 때는 InitialContext를 통해서만 가능하다. 그러므로 어플리케이션에서 JNDI를 사용하려면 반드시 InitialContext 객체를 생성해야만 한다. 이를 위해서는 InitialContext 에 관한 정보 및 다양한 JNDI 서비스 정보를 설정하는 작업이 필요하다. (물론, WAS서버 안에서 돌아가는 Servlet과 같은 경우에는 내부적으로 설정이 되어있어 따로 해주지 않아도 된다)
JNDI 서비스를 정의하기 위해서는 다음과 같은 방법을 이용하면 된다. (프로퍼티의 값은 이 글의 하단에 WebLogic과 JEUS를 비교한 것을 참고하기 바람)
1. JNDI 프로퍼티 파일 작성하기 가장 편리하게 JNDI 서비스를 정의하는 방법은 프로퍼티파일을 이용하는 것이다. jndi.properties 파일을 아래 예제와 같이 작성한 후 클래스 패스에 위치시키거나 클라이언트 프로그램을 배포할 때 클래스 파일들과 함께 포함시키면 InitialContext 객체가 jndi.properties 파일의 설정을 읽을 수 있다.
[jndi.properties] java.naming.factory.initial=[InitialContext를 구현한 서버의 실제 팩토리 명시] java.naming.provider.url=[네이밍서비스에 대한 주소명시]
2. 시스템 프로퍼티로 전달하기 클라이언트를 실행하는 시점에 커스터마이징이 필요한 상황에서는 위와 같이 jndi.properties파일을 수정하기가 곤란하다. 이때에는 실행할 때 다음과 같이 프로퍼티값을 설정하여 사용할 수 있다. java -Djava.naming.factory.initial=[InitialContext를 구현한 서버의 실제 팩토리 명시] \ -Djava.naming.provider.url=[네이밍서비스에 대한 주소명시] ...
3. 애플릿 파라미터로 전달하기 애플릿에서는 <applet> 태그를 포함한 HTML 파일에서 <param>태그를 통해 값을 넘겨줄 수 있다.
<applet code="MyApplet" width="500" height="400"> <param name="java.naming.factory.initial" value="[InitialContext를 구현한 서버의 실제 팩토리 명시] "/> <param name="java.naming.provider.url" value="[네이밍서비스에 대한 주소명시]" /> </applet>
4. 코드에 삽입하기 클라이언트 코드안에 InitialContext 생성에 필요한 환경을 직접 설정하는 방법이다. 설정하고자 하는 프로퍼티들을 Properties 객체에 담아 InitialContext를 생성할 때 생성자 파라미터로 넘겨주면 된다. 하지만 이방법은 다른 JNDI 서비스를 사용하거나 서비스 정의가 바뀔 때 마다 소스코드를 수정해야 하므로 유지보수가 어렵다는 단점이 있다. javax.naming.Context 의 멤버속성을 이용하여 프로퍼티 값을 설정한다.
Properties h = new Properties(); h.put(Context.INITIAL_CONTEXT_FACTORY, "[InitialContext를 구현한 서버의 실제 팩토리 명시] "); h.put(Context.PROVIDER_URL, "[네이밍서비스에 대한 주소명시]");
Context context = new InitialContext(h); ...
===========================================================
※ WebLogic의 JNDI 시스템 프로퍼티 1. java.naming.factory.initial : weblogic.jndi.WLInitialContextFactory 2. java.naming.provider.url : t3://127.0.0.1:7001
※ JEUS의 JNDI 시스템 프로퍼티 1. java.naming.factory.initial : jeus.jndi.JNSContextFactory 2. java.naming.provider.url : 127.0.0.1 * 자세한 사항은 JEUS manual중 reference-book.pdf의 제6장. JNDI System Properties 참고
[reference] - JEUS MQ 안내서 (JEUS 6 Doc) - JEUS Reference Book (JEUS 6 Doc) - 웹로직으로 배우는 EJB - 대림출판사
출처 : http://kimgisa.net/tag/jndi |