6 장 . jndi(java naming and directory interface)
DESCRIPTION
6 장 . JNDI(Java Naming and Directory Interface). 6-1. JNDI 사용하기 . 6-2. JNDI 네이밍 서비스에 객체 등록하기 6-3. JNDI 네이밍 서비스에 등록된 객체 사용하기 6-4. JNDI 네이밍 서비스에 등록된 객체의 갱신. JNDI 란. 분산환경 EJB 의 엔터프라이즈란 분산환경을 의미함 컴퓨터 여러 대에 서버가 분산되어 운영된다는 것을 의미함 이때 각각의 서버는 객체를 공유할 방법이 필요. JNDI 란. 네이밍 서비스 - PowerPoint PPT PresentationTRANSCRIPT
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.WLInitialC
ontextFactory");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.WLInitialC
ontextFactory");p.put(Context.PROVIDER_URL, "t3://localhost:7001");Context ctx = new InitialContext(p);
6-1. JNDI 사용하기
Properties Key 의미Context.INITIAL_CONTEXT_FACTORY
InitialContext 가 PROVIDER_URL 로 지정한 서버와 실제로 통신하기 위한 객체를 설정한다 . 웹로직 서버의 경우 weblogic.jndi.WLInitialCont
extFactory 를 지정한다 .
Context.PROVIDER_URL 서버의 URL 을 지정한다 . “t3://localhost:7001” 는 현재 컴퓨터 (localhost) 에 연결하게 된다 .
• java.util.Properites 객체에 전달하는 Properties Key 값의 의미
6-1. JNDI 사용하기
JNDI 네이밍 서비스를 하는 서버의 주소가 변경된 경우 소스를 수정하고 재컴파일 해야함
이를 해결하기 위해 소스에는Context ctx = new InitialContext();
Jre 폴더 아래의 lib 폴더에 jndi.properties 파일 작성Java.naming.factory.initial =
weblogic.jndi.WLInitialContextFactoryJava.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 네임 , 객체 )