Transcript JNDI 란

6장. JNDI(Java Naming and Directory Interface)

6-1. JNDI 사용하기.

6-2. JNDI 네이밍 서비스에 객체 등록하기 6-3. JNDI 네이밍 서비스에 등록된 객체 사용 하기 6-4. JNDI 네이밍 서비스에 등록된 객체의 갱 신

JNDI 란

 분산환경 – – – EJB의 엔터프라이즈란 분산환경을 의미함 컴퓨터 여러 대에 서버가 분산되어 운영된다는 것 을 의미함 이때 각각의 서버는 객체를 공유할 방법이 필요

JNDI 란

 네이밍 서비스 – – 대표적이 예로 도메인명을 IP로 바꿔주는 서비스 분산된 환경에서 특정한 이름으로 객체를 등록해 서 관리할 수 있는 방법  예) JDBC 실습에서 DataSource를 “ora9 ” , “ mysql9 ” 으로 등록하여 사용함 등

JNDI 란

 JDNI – – 자바에서 객체를 네이밍 서비스에 등록, 삭제, 검 색을 할 수 있는 방법 여러 대의 서버간에는 JNDI를 이용하여 객체를 등 록하고, 참조하여 이용됨

JNDI 란

 문제점 – – JNDI lookup()을 사용해서 객체를 참조시, 과부하 가 발생 JSP/서블릿에서는 init() 메소드를 사용함 (JSP/서블릿이 처음 실행될 때 한번만 실행됨)

6-1. JNDI 사용하기

 JNDI를 사용하는 클라이언트는 – – javax.naming 패키지 안의 클래스를 이용 import javax.naming.*; 선언  javax.naming.Context 인터페이스 – – 기본적인 JNDI 객체 JNDI 네이밍 서비스에 사용할 객체를 추가, 삭제, 검색할 수 있는 메소드를 가짐

6-1. JNDI 사용하기

 웹로직 내부에서 JNDI를 이용할 경우에는 – javax.naming.InitialContext 객체를 생성하여 사용 javax.naming.Context ctx = new javax.naming.InitialContext();  우리가 사용한 코드상에서 사용은..

import javax.naming.*; Context ctx = new InitialContext();

6-1. JNDI 사용하기

 웹로직 서버 외부에서 동작하는 JSP/서블릿 혹 은 엔터프라이즈 빈즈에서 JNDI를 이용할 경우 java.util.Properties p = new java.util.Properties(); p .put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); p .put(Context.PROVIDER_URL, "t3://localhost:7001"); javax.naming.Context ctx = new javax.naming.InitialContext( p );

6-1. JNDI 사용하기

import java.util.Properties; import javax.naming.*; Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); p.put(Context.PROVIDER_URL, "t3://localhost:7001"); Context ctx = new InitialContext( p );

6-1. JNDI 사용하기

• java.util.Properites 객체에 전달하는 Properties Key값의 의미 Properties Key Context.INITIAL_CONTEXT

_FACTORY 의미 InitialContext가 PROVIDER_URL로 지정한 서 버와 실제로 통신하기 위한 객체를 설정한다. 웹 로직 서버의 경우 weblogic.jndi.WLInitialContextFactory 를 지정 한다.

Context.PROVIDER_URL

서버의 URL을 지정한다. “t3://localhost:7001” 는 현재 컴퓨터(localhost)에 연결하게 된다.

6-1. JNDI 사용하기

  JNDI 네이밍 서비스를 하는 서버의 주소가 변경된 경우 소스를 수정하고 재컴파일 해야함 이를 해결하기 위해 소스에는 Context ctx = new InitialContext();  Jre 폴더 아래의 lib 폴더에 jndi.properties 파일 작성 Java.naming.factory.initial = weblogic.jndi.WLInitialContextFactory

Java.naming.provider.url = “ t3://localhost:7001 ”

6-2. JNDI 네이밍 서비스에 객체 등록하기

 JNDI 네이밍 서비스에 객체를 등록하려면 InitialContext객체를 생성한 후, Context가 가지고 있는 bind() 메소드를 이용 Context ctx = new InitialContext( h ); ctx.bind( “ ksp ” , “ 김성박”); // bind(String, Object) // bind(JNDI 네임, 객체)

6-3. JNDI 네이밍 서비스에 등록된 객체 사용하기

 JNDI 네이밍 서비스에 등록된 객체를 가져오려면, InitialContext객체가 가지고 있는 lookup()메소드에 JNDI 이름을 인자로 지정 Context ctx = new InitialContext( h ); ctx.lookup( “ ksp ” ); // lookup(String) // lookup(JNDI 네임)

6-4. JNDI 네이밍 서비스에 등록된 객체의 갱신 #1

 JNDI 네이밍 서비스에 등록된 객체의 갱신하려면, InitialContext 객체의 rebind 메소드를 이용 Context ctx = new InitialContext( h ); ctx.rebind( “ ksp ” , “ 김성박”); // bind(String, Object) // bind(JNDI 네임, 객체)