JNDI, JTA, JTS, JMS

프로젝트 관리/기술 용어 2012. 10. 18. 11:16

문1) JNDI, JTA, JTS, JMS

답)

1. J2EE의 표준 서비스들인 JNDI, JTA, JTS, JMS의 개요

 가. J2EE의 정의

   - Enterprise Development에 필요한 다양한 환경을 정의해 놓은 규약,

     API와 TOOL들을 일컬음

 나. J2EE의 3대 카테고리

   - Component : Servlet, JSP, EJB :비지니스 로직 구현, GUI

   - Service : JDBC, JNDI, JTA : 데이터 베이스, 네이밍 서비스, 트랜잭션

   - Communication : JMS, JAVA Mail, JFA : 객체간의 통신, 메일, 메신져

    

2. JNDI, JTA, JTS, JMS의 개념 및 특징

 가. JNDI(Java Naming and Directory Interchange)

      - 네이밍 서비스와 자원에 속성까지 설정하는 디렉토리 서비스를 사용할 수 있게 하는 API

      - A서버 : 리소스, 서빗 객체등을 디렉토리에 등록

      - B, C, D 원격지에선 A서버의 주소로 등록된 서비스, 객체를 이름으로 검색/사용

 나. JTA(Java Transaction API)

     - 트랜잭션 관리를 위한 API, ACID(원자성, 일관성,독립성,지속성) 지원

     - JTA 트랜잭션을 사용하여 제어하기 위한 메소드들

       javax,transaction.UserTransaction 인터페이스의 begin(), commit(), rollback() 메소드 사용

 다. JTS(Java Transaction Service)

    - J2EE 트랜잭션 매니저가 어떤 일을 해야 하는지를 규정한 스펙

    - JTA를 지원하는 Transaction Manager의 구현을 지정하고 OTS 1.1 스펙의 자바 매핑을 정의

    - JTS는 transactions using the internet inter-ORB Protocol(IIOP)를 사용하여 트랜잭션 전파

 라. JMS(Java Message Service)

    - 비동기식 메시징을 위한 표준 API, 자바 어플리케이션이 비동기식 통신 수단 제공

    - 핵심개념 : Message Broker(메시지를 건네받는 역할, 우체국), 목적지(수신 주소)

    - 목적지 종류 : 큐(point-to-point모델), 토픽(publish-subscribe모델)

    - 장점 : 대기없음, 메시지 기반, 위치 독립성, 전달보증

                                                                                                  "끝"

 

 

[참고자료]

-----------------------------------------------------------------------------

* JAVA2 platform : Sun에서 제시한 기본 어플리케이션에서 엔터프라이즈 솔루션, 모바일 솔루션에

                          대한 개발 방법론과 다양한 API와 명세를 정의한 것

   - J2SE(Java2 platform Standard Edition) : 자바 프로그램을 하는데 있어서 가장 기본적인 핵심부분

   - J2EE(Java2 platform Enterprise Edition) : 엔터프라이즈 솔루션을 개발하는데 있어 필요한 여러가지

                                                               서비스 부분과 API, 개발 방법론을 제시

   - J2ME(Java2 platform Micro Edition) : 다양한 모바일 솔루션 개발하는데 있어서 기본적인 환경, 
                                                          서비스에 대한 부분을 정의, API를 제공

* J2EE : Enterprise Development 에 필요한 다양한 환경을 정의해 놓은 규약

            위 규약만 가지고 시스템이 움직이는 것은 아님, 예로 자바 프로그램이 구동되려면 JVM이

            필요한 것 처럼. J2EE는 이 API와 Tool들을 일컬음,

            그리고 이와 같은 API와 TOOL등을 포함하고 기타 서비스들을 탑재한 서버를

            ===> J2EE server, Web Application Server, J2EE application server라 일컬음

 

* J2EE Standard Service

  - Servlet, JSP, JDBC, JMS, JNDI, JTA, Java Mail, JAF, RMI-IIOP등

    위 기술로 JMS로 Messaging 서비스, JNDI로 Naming and Directory 서비스, JTA로 Transaction 서비스를 생성 가능

 

* J2EE의 3가지 Category

  - Component : Servlet, JSP, EJB --> 비지니스 로직 구현, 프리젠테이션 로직 담당, 주로 개발자가 개발하는 부분

  - Service : JDBC, JNDI, JTA

                  이미 존재하는 서비스들, 예로 database나 naming service나 Transaction 서비스와 같은 것들로 개발자

                  는 이를 그냥 사용하기만 하면 됨

  - Communication : JMS, JAF, Java Mail, RMI-IIOP --> 객체들간의 통신에 사용되는 것들로, 메일이나 메시지를

                                                                                다루는 시스템 개발때 주로 사용

 

JNDI : 자원을 이름으로써 관리하는 서비스

JTA : 개발자는 JTA를 이용하여 트랜잭션처리를 쉽게 할수 있음

JMS : 메세지 전달 서비스, 상대방이 현재 대화에 응할수 없는 상황일지라도 메세지를 보낼 수 있어야 함

 

* J2EE 구현 아키텍처

 

 

1) JNDI(Java Naming and Directory Interface)

    - 자원에 이름을 붙여 주는 서비스와 자원에 이름은 물론 속성까지 설정할 수 있도록 하는 서비스를 
      사용할 수 
있게 하는 API

    - 특정한 프로토콜을 지정하는 규약이 아니라, 단순히 여러 가지 프로토콜을 사용할 수 있도록 하는

       표준적인 API를 지원

    - 분산 환경의 서버들간에 객체를 공유할수 있는 방법을 제공

    - 네이밍 서비스에 JNDI를 이용해서 객체를 등록, 삭제, 검색

    - 원격지에서는 해당 JNDI명을 이용해서 객체를 찾을 수 있다.
       원격지에 있는 객체를 통해 참조하기 위하여 객체 직렬화 작업을 하게 되며, 네트워크 트래픽이 발생
 

  EX) A서버에 리소스, 서비스 객체등을 디렉토리에 등록해 놓으면

        B,C,D라는 원격지 서버에서 A서버의 리소스, 서비스 객체등을 사용 할 수 있음

        이때 B,C,D라는 원격지에서 A서버의 주소를 알아야되며 등록된 리소스, 서비스,

        서비스 객체가 등록되어진 이름을 알아야 함, EJB나 JMS에서 사용됨

 

* Directory Service

  - 디렉토리 서비스 표준 : X.50, LDAP

 

 2) JTA(Java Transaction API)

     - 트랜잭션 관리를 위한 API

     - 하나의 트랜잭션이 끝나기 전에 다른 트랜잭션 시작하는 것과 같은 중첩된 트랜잭션을 지원 안함

     - JTA 트랜잭션을 사용하여 제어하기 위한 메소드들

       javax,transaction.UserTransaction 인터페이스의 begin(), commit(), rollback() 메소드 사용

 

 3) JTS(Java Transaction Service)

    - J2EE 트랜잭션 매니저가 어떤 일을 해야 하는지를 규정한 스펙

    - JTA를 지원하는 Transaction Manager의 구현을 지정하고 OTS 1.1 스펙의 자바 매핑을 정의

    - JTS는 transactions using the internet inter-ORB Protocol(IIOP)를 사용하여 트랜잭션 전파

 

 4) JMS(Java Message Service)

    - 비동기식 메시징을 위한 표준 API

    - 자바 어플리케이션이 비동기식으로 통신을 할 수 있는 수단을 제공

    - JMS의 핵심 개념 2가지

      1) 메시지 중개자(Message Broker) : 메시지를 건네받는 역할 수행, 우체국 역할

      2) 목적지(Destination) : 어디로 전달되어야 하는지 주소

          큐와 토픽 두종류의 목적지 :

          -> 큐에는 point-to-point 모델 : 큐에 메시지 저장, 수신자가 큐에서 메시지 요청 후 가져가고 삭제,

                                                      반드시 하나의 수신자에게만 전달

          -> 토픽에는 publish-subscribe 모델 : 메시지가 토픽에서 전달되고 구독자는 이를 기다린다.

                                                                 모든 구독자가 같은 메시지 사본을 받는다

    - JMS의 장점

       1) 대기 없음 : 메시지 응답을 기다릴 필요가 없음

       2) 메시지 기반 : 메소드 호출을 기반으로 하는 RPC와는 달리 JSM는 데이터 중심

       3) 위치 독립성 : 동기시 RPC는 서비스는 보통 네트워크상의 위치를 알아야 접근 가능,

                               서비스의 IP나 포트 바뀌면 클라이언트도 따라 변경이 해야 하는 단점.

                               큐나 토픽에서 메시지를 꺼내올 수만 있다면 서비스의 위치는 중요치 않음

       4) 전달 보증 : 메시지가 전송당시 서비스에 이용불가 상태라도 메시지는 서비스가 살아날때까지 어딘가에 저장되어 있음


출처 - http://cafe.naver.com/accent93/42

: