RadarURL

소프트웨어
2012.12.27 05:11

분산 시스템의 소개(JEUS & WebtoB)

조회 수 4748 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

분산 시스템의 소개

시스템 환경 변화

  • 1-tier 시스템 : 메인 프레임 중심
  • 2-tier Client/Server 개방형 시스템 
  • 3-tier 미들웨어 시스템 등장 : 2-tier 시스템에 대해 보완을 하기 위해
  • N-tier 시스템 등장

    • 시스템 구성

      • 3-tier 환경을 극복하기 위하여 개발된 환경
      • EJB 컴포넌트 기반으로 작성되므로 내부적으로 RMI를 사용하여 통신한다.
      • EJB 아키텍쳐는 개발자가 분산환경을 쉽게 개발할 수 있게 되어 있다.
    • N-tier 시스템 설계시 유의사항

      • 확장성 고려, 계층간 의존성 최소화
      • 이식성
      • 어플리케이션 설치 시 시스템 환경에 대한 영향 최소화
      • 네트웍 트래픽 고려
      • 특정 벤더의 솔루션에 의존하지 말아야
  • 미들웨어의 종류

    • TP-Moniter : 이질적인 분산환경에서 트랜잭션을 처리하고 각종 처리절차를 관리하는 기능을 제공
    • Web Application Server : 웹상에서 트랜잭션 처리, 이기종간 상호 통신 기능(J2EE)  <= Jeus가 여기에 속함
    • Messaging Oriented Middleware : 메시지를 큐라고 불리는 전달 중계소에 넣어 처리하고 큐에 의한 메시지 관리 기능 제공(비동기적)
    • Object Request Broker : 클라이언트 객체가 ORB라는 소프트웨어 버스를 이용하여 원격지 서버의 메소드를 호출하는 기능 제공

J2EE의 이해

  • Java TM

    • 목적 : To Ensure "Write Once, Run Anywhere"
    • 플랫폼 : J2SE, J2EE, J2ME
  • J2EE란?

    • 엔터프라이즈 환경에서 자바를 이용한 어플리케이션 개발을 위한 표준

      • 데이타베이스 처리(JDBC, JTS, JTA)
      • 비동기 메시지 처리(JMS)
      • 분산 트랜잭션 컴포넌트(EJB)
      • 분산 객체(RMI)
      • 웹 어플리케이션(Servlet, JSP)
    • J2EE의 모든 스펙들은 벤터들에 의해서 구현되며 개발자들은 표준 API를 이용하여 개발한다.
  • J2EE - JDBC

    • Java DataBase Connectivity
    • 표준화된 데이타베이스 접근 방법(API)을 제공한다.
  • J2EE - JNDI

    • Java Naming And Directory Interface
    • Naming and Directory 서비스를위한 자바 API
    • 네트워크상에 존재하는 도든 리소스들에 대해서 물지적인 위치를 몰라도 디렉토리와 이름 구조로 접근할 수 있다.
    • DNS, NDS(노벨), LDAP 등의 Naming & Directory 서버에 대한 표준화된 접근 방식 제공
  • J2EE - RMI

    • Remote Method Invocation
    • 리모트 상에 존재하는 객체의 method를 호출하는 프로토콜
    • stub, skeleton은 네트워크에 관련된 처리와 해당 프랫폼에 맞는 데이터 형식으로 변환하는 작업을 처리한다.

      • 로컬 method를 호출하는 것과 같은 느낌
      • 다른 네트워크 프로토콜과도 인터페이스 할 수 있다.
      • RMI-IIOP 프로토콜은  RMI 클라이언트가 코바 객체를 호출하거나 코바 클라이언트가 RMI객체를 호출할 수 잇다.
  • J2EE - Servlet

    • 동적인 HTML을 생성한다 (CGI와 같은 개념을 가지는 자바기반의 표준)
    • 클라이언트와는 HTTP 프로토콜을 기반을 두고 인터페이스한다.
    • 클라이언트(브라우저)입장에서는 하나의 웹 페이지를 호출하는 것과 같아.
    • 브라우저의 호출에 의해 데이타베이스나 레거시 시스템과의 연계를 할 수 있고 비즈니스 로직을 처리할 수 있다.
    • 멀티 쓰레드로 동작, CGI보다 부하가 적으며 세션 관리를 위한 자체 메커니즘을 제공
    • Jeus는 동적일 파일을 처리 하고, WebToB는 정적인 파일을 처리한다.
  • J2EE - JSP

    • 서블릿의 개발상의 단점 보완(HTML과 JAVA 코드를 분리, 웹 어플리케이션 개발시 컨탠츠 변경 및 관리가 쉽다)
    • 텍스트 기반의 HTML문서에 자바코드를 삽입하는 형태를 가진다.(XML기반의 태그에 자바코드를 삽입. 컨텐츠 생성을 위한 로직 처리의 캡슐화)
    • 하나의 JSP 파일은 하나의 서블릿으로 변경, 실시간에 바로 적용된다.
  • J2EE - EJB

    • 비즈니스 로직에 대한 서버측 컴포넌트
    • 비즈니스 로직에 대한 재사용성
    • 다른 EJB 서버로도 쉽게 적용될 수 있다.
    • 트랜잭션 처리, 보안, 동시 사용자 처리 등을 EJB서버가 처리함으로써 업무 로직에 집중할 수 있다.
    • 배치 디스크립터를 통해 배치에 관련된 사항이나 환경에 관련된 사항을 소스와 분리시킴으로써 다른 환경에 쉽게 적용할 수 있다.
  • Java 기반의 인터넷 플랫폼

    • 클라이언트 층

      • 클라이언트는 웹 브라우저나 모바일 폰과 같은 무선 장비상의 다양한 Markup Language 브라우저를 통해 주로 UI(User Interface)를 담당하거나, Applet 또는 Java application 형태로 구현될 수도 있다.
    • 프리젠테이션 층

      • 주로 JSP, Servlet 응용 프로그램으로 클라이언트의 요구를 받아 어플리케이션 층에 전달하고 수행결과를 받아 다양한 클라이언트 측 응용 프로그램의 요구에 맞게끔 결과를 전달하는 역할을 한다.
    • 어플리케이션 층

      • 비즈니스 로직을 포함하고 있는 엔터프라이즈 자바 빈즈(EJB) 컴포넌트들의 집합으로 데이터베이스나 EPR 등이 포함된 기업 정보 시스템(EIS)에 직접 접근하고 그 결과만을 프리젠테이션 층에 전달한다.
  • J2EE의 장점

    • OS 등 플랫폼에 영향을 받지 않는다
    • 표준 API을 이용하여 개발을 함으로써 서버 플랫폼 변경 시에도 포팅이 쉽다.
    • 복잡한 트랜잭션 처리, 비동기 처리, 동시사용자 처리 등에 대한 부담을 개발자로부터 덜어주고, 표준화된 분산 컴포넌트의 사용으로 확장성을 높인다.

Web server와  WAS의 이해

  • Web Server의 정의 : Web Client(웹 브라우저)에게 컨텐츠를 제공하는 서버, 정적인 HTML이나 jpeg, gif 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에 전송함 => WebToB
  • WAS(Web Application Server)의 정의

    • Server 단에서 Application을 동작할 수 잇도록 지원함. => Jeus
    • 기존 웹 서버와 달리 동적인 요구에 대응하기 위해 적합한 형태로 변화, Web Client(브라우저)에게는 결과값만 전송함.
    • Container(컨테이너)라는 용어로 쓰이며, 초창기는 CGI, 그 후에서는 Servlet, JSP, ASP 등의 프로그램으로 사용됨
  • 웹서버와 WAS의 구성에 따른 분류

    • WAS & WebServer : 모든 컨텐츠를 한고에 집중시켜, 웹서버와 WAS의 역할을 동시에 수행, 스위치를 통한 로드 밸런싱, 사용자가 적을 경우 효율적
    • WAS X WebServer : 웹서버와 WAS의 기능적 분류를 통해 효과적인 분산을 유도, 정적인 데이터는 웹서버에서 처리, 동적인 데이터는 WAS가 처리
    • WAS X WAS X WebServer : WAS단을 프리젠테이션 로직와 비즈니스 로직으로 구분하여 구성, 특정 logic의 부하에 따라 적절한 대응, 구성이 복잡해지는 단점

WAS 도입효과 및 기술표준

  • WAS 도입효과

    • 안정된 시스템 구성 : 안정적 서비스 보장, 자동적인 어플리케이션 복구기능 제공, 업무 로직이 중간 어플리케이션 서버에 존재, 쉽고 빠르게 구축할 수 있다.
    • DB 성능 보장 : WAS서버가 DB서버와의 최적 사용을 조절화, DB connection pool을 총해 DB connection 관리 및 트랜잭션 처리
    • 비용절감 : 서버 리소스의 원할한 사용
  • WAS 기술 표준

    • J2EE : Java 기반의 분산객체 아키텍쳐
  • WAS는 J2EE 아키텍쳐를 구현한 플랫폼 솔루션
  • WAS의 일반적인 기능

    • Web 환경을 위한 n-tier Architecture 플랫폼
    • Presentation(GUI)과 Business Logic의 분리 운영
    • Thread 관리
    • 부하조절(Load Balancing) 기능 지원
    • 장애대책(Fail-Over) 기능 지원
    • Transaction 처리 자동화
    • Web Service 플랫폼으로써의 역할

 

Overview of JEUS 5

JEUS 개요

  • JEUS 소개 : JEUS => Java Enterprise User Solution
  • JEUS 특장점

    • 대규모 부하처리 Web서버 지원
    • 성능 및 안정성 보장 가력한 아키택처
    • 분산환경에서 트랜잭션 보장
    • 강력한 관리 기능
  • JEUS Servlet Engine

    • Load Balancing & Fail-Over

      • 서버의 부하 상태를 체크하여 Dynamic Balancing
      • 동일 Node 내 Engine Fail 시 자제 복구(Auto Restarting)
      • Multi-Node 환경 하에서, 한 Node Fail 시 Backup 노드에서 복구
    • 다양한 세션 클러스터링

      • 별도의 세션 서버를 이용한 방식과 Web Container 간에 직접 소통하여 복제하는 방식 모두 사용
  • JEUS 성능

    • 부하 조절

      • 각 서버(Node)로의 동적 부하분산

        • 서버들의 로드를 실시간으로 수집
        • 클라이언트로부터의 요청을 처리 가능한 서버로 분배
      • 각 서비스별 처리능력의 동적 조절

        • 클라이언트 요청의 증가에 따르느 서비스 루틴의 자동적 증가
        • Min, Max 로 조절
      • 2단계 부하분산 구성

        • WebToB(Tmax Soft의 웹서버) ~ Servlet ~ EJB 에서 2단계 부하분산 가능
    • Comm Layer

      • 대용량 처리에 적합하도록 성능항상기법 강화

        • Non-Blocking IO(NIO) / Named Pipe / Call-by-Reference
        • 분산신 세션 클러스터링
  • JEUS 가용성 및 확장성

    • 고 가용성(HA)과 사용자 증가 및 업무량 확장에 따른 확장성 보장
    • Active-Active 클러스터링을 통해 제공
  • JEUS Special Features

    • WebToB는 JEUS 웹 어플리케이션 서버의 기본 웹서버, WebToB와 JEUS가 같은 머신에 잇을 경우 서로 Pipe 통신이 가능
    • 웹투비의 경우 반드시 웹투비가 먼저 기동이 되어 있어야 한다. 연결을 처음 설정하는 과정에서 웹투비가 기다리는 역할을 하기 때문(아웃 바운드 형식)
  • JEUS 관리 툴 : 웹 기반 환면으로 제공
  • JEUS 개발 환경

    • Local JEUS 와의 연동 뿐 아니라 Remote JEUS를 사용하는 개발환경 지원]
    • JEUS 서버의 1회 boot 만으로 웹 모듈 및 EJB 모듈 등이 개발 가능하므로 편의성 증가

JEUS 설치

  • 시스템 요구사항 : java 1.5.0_14 이후 버전 이 있어야 한다.
  • JEUS 버전 확인 : jeusadmin -version, jeusadmin -fullversion
  • JEUS 라이센스 확인 : jeusadmin -licensedue(기간), jeusadmin -licenseinfo(정보)
  • JEUS 설치 시 환경변수 설정

    • $JEUS_HOME/bin/jeus.properties.cmd 파일에 설정.. => 정의 되어 있음.
    • 서버 기동 : jeus 또는 jeus -Uadministrator -P<passwd>
    • 웹 관리자 로그인 : http://<server ip>:<baseport+8>/webadmin 을 실행하면 접속 가능하다.

JEUS Architecture와 기능

  • JEUS 구성 Component

    • 클라이언트 : JEUS 시스템에 접근하는 객체, Web Container의 서비스를 요청
    • 웹 서버 : 클라이언트의 HTTP 요청을 받아 필요한 경우에 JEUS의 Web Container에 전달
    • JEUS 관리자 & 노드 : Web Container가 동작하는 환경을 제공
    • Web Container(Servlet engine) : 웹 서버나 HTTP 클라이언트로부터 서비스 요청을 받고 웹 어플리케이션을 실행시켜 궁극적으로 HTML 응답 페이지를 통해 응답
    • Session Server : 분산된 환경에서 클라이언트의 Session을 관리하고, 이 Session 데이터가 모든 Web Container에서 사용되로록 해준다.
    • JNDI Naming Server : Servlet과 JSP와 같은 웹 어플리케이션이 시스템 내부의 객체나 리소스를 접근할 수 있도록 해준다.
    • EJB & JMS engine : 웹 어플리케이션에 EJB와 JMS 서비스를 제공, JNDI naming Server를 통해 접근
    • Security Server : 웹 어플리케이션들에게 보안 정책을 적용
    • TX(트랜잭션) 관리자 : 트랜잭션 관리
    • 데이터베이스 : 많은 양의 데이터를 저장하는, 가장 일반적인 방법. 데이터베이스 database connection pool을 통하여 접근 가능
  • JEUS Manager

    • 하나의 JEUS 안에서 최상위 관리 계층
    • 주요 Component

      • Node
      • JNDI Naming Server
      • Security Server
      • External Resource(Database connection, J2EE Connectors)
    • JEUS Manager는 백업과 장애대책은 위해서 자신의 노드 또는 클러스터링에 포함된 다른 JEUS Manager와 항상 통신할 수 있도록 대기
    • JEUS 컨트롤은 JEUS Manager를 통해서 이루어지며 jeusadmin Tool이나 웹관리자를 이용해서 할 수 있다.
  • JEUS Node

    • Actual JEUS Server
    • JEUS Manager에 의해서 관리, Clustering 된다
  • JEUS Engine Container

    • 하나의 Engine Container는 하나 이상의 JEUS Engine들과 네이밍, 보안, 트랜잭션 관련 서비스들을 서로 묶는데 사용되는 논리적인 구성요소
    • 물리적으로 JEUS Node/Manager가 실행되는 JVM과는 별도의 JVM에 존재(단, "Default" Engine Container일 경우 같은 JVM에서 기동된다.
  • JEUS Engine

    • Engine Container 내부에서 동작하며, Continer에서 제공하는 트랜잭션, 네이밍, 보안서비스 등을 이용
    • J2EE Application이 수행되는 Component
    • 스팩상 Container의 개념
    • 4개의 Type

      • Servlet (web) Engine
      • EJB Engine
      • JMS Engine
      • WS(WebServer) Engine
  • JEUS 디렉토리 구성

    • bin : 실행파일, 스크립트
    • config : JEUS 환경파일
    • docs : 문서
    • lib : JEUS BOOT 시 필요한 Library
    • license : Jeus License
    • logs : Jeus 시스템 로그
    • sample : 예제
    • webhome : J2EE Application 의 홈 디렉토리
    • webserver :  Jeus 내장 Webserver
    • workspace : Jeus가 동작하면서 사용하는 임시 디렉토리

JEUS 환경 파일 & 관리자 Tool

  • JEUSMain.xml : JEUS Manager와 노드를 관리하는 기본설정 파일 => <node> - <engine-container> - <engine> servlet, ejb, jms, ws </> </> </> 로 등재
  • WEBMain.xml : Servlet/JSP Engine 설정 => <web-container> - <context-group> - <context> - <seesion-config> - <encoding> - <webserver-connection> http-listenser, webtob-listener </> </>
  • jeus-web-dd.xml : JEUS Web Application Deployment Descriptor
  • EJBMain.xml : EJB Engine configuration
  • jeus-ejb-dd.xml : JEUS EJB module Deploymen Descriptor
  • JNLPMain : JNLP 설정
  • jeus-client-dd.xml : Application Client Deployment Descriptor
  • jeus-connector-dd.xml : Resource Adaptor Deployment Descriptor
  • JMSMain.xml : JMS Engine 설정
  • policies.xml : JEUS Security policy 설정
  • subjects.xml : JEUS Security subject 설정
  • vhost.xml : JEUS virual host 설정
  • jeus-webservices-client-dd.xml : Webservice client 설정
  • jeus-webservices-config.xml : Webservice client 설정
  • 표준 J2EE EJB 모듈 JAR 파일

    • EJB Module JAR

      • META-INF : J2EE EJB DD, JEUS EJB DD
      • Package name : EJB HOME, EJB Remote, EJB Implementation, Helper Class

JEUS Management Tool

  • Web Manager : 구성 요소와 어플리케이션 모듈들의 배치 및 관리 기능
  • JEUS Builder : 어플리케이션 모듈 작성 및 패키징 기능
  • jeusadmin

    • JEUS(JEUS Manager, Engine, Engine Container) 기동/종료 등의 기본적인 관리작업
    • Application의 deploy/Undeploy와 Logger level 변경작업, JMV Mbean의 List 등
    • 사용법 : jeusadmin <nodename> -U<user> -P<password>
  • Webadmin

    • Container에서 실행되는 application에 대한 조작이나 Container의 설정을 바꾸기 위해서
    • 사용법 : webadmin <container_name> -U<user> -P<password>
    • 기능

      • 컨테이너의 상태를 알려 주는 명령(st, ti, info)
      • 컨테이너의 설정 정보에 관한 명령(cfg, set)
      • 컨테이너의 동작을 조절하는 명령(suspend, resume, reload, restart, terminate)
  • dbpooladmin

    • JEUS 안에 구성된 DB Connection Pool을 제어하는데 사용
    • 사용법 : dbpooladmin <container_name> -U<user> -P<password>
  • jspc/jspc2

    • JSP 배치 컴파일러는 "처음접속" 시 성능향상을 위해 JSP 파일을 사전에 컴파일
    • 사용법 : jspc -e <engine_name> 
    • 사용법 : jspc2 -mode {normal | war | map}

JEUS Web Context

  • Context

    • Java Servlet Specificaton에서 정의
    • WAR(Web Application Archiev)

      • WAR 표준을 지원하는 WAS(Web Application Server)로의 배치(deploy) 및 실행 가능한 .war 파일 단위
      • 하나의 Web application은 server에서 돌아가는 다른 web application과  분리된 환경인 servlert context 안에서 운영
    • WEBMain.xml 에서 정의
  • ContextGroup

    • 여러 Context들의 집합으로 Context 보다 큰 단위
    • J2EE 표준이 아닌 JEUS에서만 존재하는 단위
    • 각각의 ContextGroup은 다른 ContextGroup과 공유하지 않는 전용의 웹 서버를 설정하여 가지고 있다. 각 웹 서버 설정에는 client request를 받아 처리하는 worker thread pool 설정을 가지고 있다.

 

Overview of WebtoB

WebtoB Installation

  • 설치 전 시스템 Check tkgkd

    • WebtoB 기설치 유무
    • 사용 할 Port (디폴트는 8080으로 되어 있음. 80은 Root 계정 사용)
    • JDK 설치
    • 사용할 Shared Memory
  • WebtoB Directory 구성

    • ap : application 파일
    • bin : 실행 파일
    • cgi-bin : CGI 파일
    • config : WebtoB config file
    • docs : 기본 Install html 파일
    • icons : DIRINDEX에서 사용할 icon
    • jeus : Standard Edition 이상
    • lib : library file
    • license : license file
    • log : log flie
    • path : IPC을 위한 Named-pipe
    • ssl : ssl 파일
    • svct : WBAPI 서비스 테이블
    • usrinc : API header file
  • License 발급 : ncpu로 hostname 확인
  • 환경파일의 Compile : wscfl -i 파일명.m => wsconfig 파일 생성
  • WebtoB 기동 : wsboot
  • WebtoB 종료 : wsdown

WebtoB 동작 원리와 기능

  • 기존 Web Server의 문제점

    • Apache의 동작 원리

      • httpd의 구조 => 사용자의 증가에 유연하게 대처하지 못함
      • 부하조절(Load Balancing)과 장애대책(Fail Over) 기능이 없다. => L4 장비가 반드시 필요
  • WebtoB 동작 원리

    • Thread 구조 배재, Process 구조 채택  => Tmax와 유사
    • WebtoB와 Tmax의 비교

      • WSM = TMM (시스템 메니져)
      • HTL = CLL (시스템 리스너)
      • HTH = CLH (시스템 핸들러)
  • WebtoB 기능

    • 효율적 프로세스 관리로 획기적 성능 향상
    • Load Balancing

      • 최적의 시스템 성능과 자원의 활용성 보장
      • 시스템의 최대 처리량(Throughput) 유지
      • 부하 분산 처리 가능
      • 다향한 부하조절 기능 제공 : H/W성능에 따른, 동적 부하 조절, 등
    • Fault Tolerance
    • Data Compression
    • Web Caching으로 캐싱 서버 기능 지원
    • Log 관리
    • Web API
    • TP-Moitor Tmax Service 호출
    • Security

WebtoB 환경 파일

  • 환경파일 : WebtoB는 실제 구동 시에 환경파일에 기입된 정보를 바탕으롬 든 기능을 수행
  • NODE 절

    • 개별적인 HOST Machine에 대한 기능 정의
    • 구성

      • WEBTOBDIR : WebtoB의 홈 디렉토리 경로 // 필수
      • SHMKEY : Shared Memory Segment, WebtoB를 이루는 process들 간의 정보를 공유 // 필수
      • DOCROOT : WebtoB가 처리하는 서비스에 대한 root 디렉토리 // 필수
      • PORT : Web 서비스를 하기 위한 포트  // 필수
      • HTH : Cleint brower와 WebtoB Process들간의 중계 역할(핸들러)
      • JSVPORT : WebtoB와 JEUS간의 연결 Port
      • IndexName : Client가 특정 파일 이름을 지정하지 않고 Service Directory에 요구를 보낼 때 기본적으로 서비스되는 파일, default는 index.html
      • ServiceOrder : HTTP 요청으로부터 해당 Server와 Service를 결정할 때, URI절과 EXT절의 우선순위를 결정한다.
  • SVRGROUP 절

    • Service Process의 논리적 연관성에 따라 그룹으로 관리
    • Service Tpye= HTML, CGI, JSV, WEBSTD, TPSTD, SSI
  • SERVER 절

    • Service를 제공하는 Process
  • VHOST절

    • 실제로는 하나의 WebtoB가 동작하지만 각지 다른 URL로 다른 문서를 제공하도록 함으로서 마치 여러 개의 Server가 Service를 제공하는 것처럼 보이도록 함
    • 설정 예

      • *VHOST
      • vhost1   DOCROOT= "WebtoB가 처리하는 서비스에 대한 Root 디렉토리", NODENAME= "실제 속한 node명", HOSTNAME="가상으로 사용하는 host명", PORT= "사용할 포트", LOGGING="로그정보", ERRORLOG="오류정보"
  • URI 절 & EXT 절

    • URI : Client의 URI 값에 따라 이를 처리하는 Service를 구분
    • EXT : Client가 요구한 파일의 확장자 명에 따라 처리 담당 Process를 지정
    • 우선순위 변경 : NODE절의 ServiceOrder= "ext,uri  또는 uri,ext"로 설정
  • LOGGING 절

    • Client의 요구내역을 저장
    • Acess Log와 Error Log가 따로 저장되며 저장 형식 지정

WebtoB Management Tool

  • 관리 프로그램

    • WebtoB의 관리 프로그램 : wsadmin
    • wsadmin은 인터프리터 형태의 관리 시스템 (Tmax랑 유사)
    • 명령어 또한 Tmax의 tmadmin에서 사용하는 명렁어와 유사

WebtoB & JEUS 연동

  • WebtoB와 JEUS의 연결 구성도

    • WebtoB와 JEUS의 연결방식

      • WebtoB와 JEUS를 연결할 때는 WebtoB 리스너를 사용
      • WebtoB 리스너는 WebtoB Server의 위치를 찾아서, 접속하고자 하는 특징을 가진다. => WebtoB 리스너를 사용할 때에는 WebtoB Server가 리스닝 모드로 대기, WebtoB 리스너(즉, Web Container)가 연결을 시도
      • 위와 같은 연결방식을 Reverse Connection Pooling
      • 방화벽 밖에 WebtoB Server를 위차 안쪽에서 리스너를 이용하여 연결을 맺을 수 있다.
      • WebtoB와 Web Container가 같은 머신 내에 존재하면 둘 간의 통신은 Pipe 통신을 사용 => 월등한 성능 향상 기대
  • WebtoB와 JEUS의 연결 설정

    • WebtoB와 JEUS Web Container와의 연결은 persistent connection
    • JEUS의 WEBMain.xml 과 WebtoB의 환경설정 파일 간의 연결이다.
    • 그래서 WebtoB와 JEUS가 연결이 형성되면 그 연결은 지속적으로 유지되며, 연결이 끊긴 경우 JEUS는 reconnect를 시도
  • JEUS의 웹 서버 리스너

    • 웹서버 리스너는 외부의 웹서버들과 연결되고 이들과는 맞춤 프로토콜을 사용
    • 클라이언트는 이 웹서버를 통하여 WebContainer와 통신
    • 클라이언트 리스너는 주로 클라이언트와 직접 연결되고 HTTP 프로토콜을 사용
  • 연동하기

    • WebtoB 환경파일 설정

      • NODE절에 JSVPORT 항목 추가 (JEUS와 연결하는 포트)
      • SVRGROUP절에 SVRTYPE이 JSV인 서버 그룹 추가(해당 그룹에 대한 처리는 JEUS에서 한다고 정의)
      • SERVER절에 ContextGroup 이름으로 서비스 추가
    • JEUS 서버의 리스너 설정

      • webtob-listener 태그 추가
      • port는 WebtoB에서 설정한 JSVPORT와 같은 PORT 지정
      • webtob-address을 연동하려는 WebtoB의 IP 지정
      • registration-id값은 WebtoB의 SERVER절에 등록한 이름을 설정
      • hth-count은 WebtoB에서 설정한 hth 갯수와 일치

 

JEUS Web Application Programming

JEUS Web Container

  • JEUS 구성 요소와 아키텍쳐

    • 클라이언트 : JEUS 시스템에 접근하는 객체, Web Container의 서비스를 요청
    • 웹 서버 : 클라이언트의 HTTP 요청을 받아 필요한 경우에 JEUS의 Web Container에 전달
    • JEUS 관리자 & 노드 : Web Container가 동작하는 환경을 제공
    • Web Container(Servlet engine) : 웹 서버나 HTTP 클라이언트로부터 서비스 요청을 받고 웹 어플리케이션을 실행시켜 궁극적으로 HTML 응답 페이지를 통해 응답
    • Session Server : 분산된 환경에서 클라이언트의 Session을 관리하고, 이 Session 데이터가 모든 Web Container에서 사용되로록 해준다.
    • JNDI Naming Server : Servlet과 JSP와 같은 웹 어플리케이션이 시스템 내부의 객체나 리소스를 접근할 수 있도록 해준다.
    • EJB & JMS engine : 웹 어플리케이션에 EJB와 JMS 서비스를 제공, JNDI naming Server를 통해 접근
    • Security Server : 웹 어플리케이션들에게 보안 정책을 적용
    • TX(트랜잭션) 관리자 : 트랜잭션 관리
    • 데이터베이스 : 많은 양의 데이터를 저장하는, 가장 일반적인 방법. 데이터베이스 database connection pool을 통하여 접근 가능
  • JEUS Web Container 구조

    • WebServer를 통해서 JEUS Web 컨테이너의 Context Group에 연결 사용.
    • 주요 하위 컴포넌트들과 기능들

      • 자동 모니터링 : Web Container 자체 감시의 가장 중요한 부분은 자동 모니터링을 이용하는 것. Container내의 모든 자원과 풀들의 상태를 감시하고 문제가 발생하였을 때 대응할 수 있는 기능
      • Context Group : 각 Web Container는 하나 이상의 context group을 포함할 수 있다. Context Group은 개별적인 작은 Web Container이다. Context Group은 여러 개의 리스너, 가상호스트, Context를 관리한다. Context Group은 Web Server 연결과 클러스터 환경에서의 Session Handling 그리고active managerment 이다.
      • Session 설정 : Web Container는 세션 관리에 대한 여러 가지 설정을 한다. Web Container 레벨에서 세션 설정이 되어 있다면, 하위 Context Group 또는 jeus-web-dd에 세션 설정을 하지 않았을 경우 공통적으로 Web Containter의 세션 설정 부분이 적용이 된다.
    • JEUS Web Container

      • Web Page의 수행을 위한 환경과 기반, 서비스 제공
      • Child Elements : 자동 모니터링, stdout 와 stderr redirection, Context Group, Session Cluster, 보안 스위치, Shutdown timeout
      • Web 모듈 Tool : 웹 관리자, webadmin, JSP batch compiler(jspc), jeusadmin

Servlet/JSP Programming

  • Servlet이란?

    • Request/Response 방식의 서비스를 실행하기 위한 Java Module, HTTP Server의 기능을 확장할 수 있는 Java 부품, Server-side Java Package module
  • Servlet를 사용하는 이유

    • CGI에 비해서 가볍고 더 빠르다, Protocol & Web Server neutral, 모든 Java API를 그대로 사용할 수 있다, 수많은 3rd Party tool과 Web Server의 지원
  • Servlet의 쓰임새

    • 서버에서 처리된 데이터를 받아 처리하거나 Form Data를 처리하는 작업, Java로 개발된 객체를 사용해야 할 경우, 많은 양의 정보를 처리해야 할 경우, 여러 사용자가 동시에 상호 작용하는 서비스를 제공하는 경우

JEUS WAR Module

  • WAR 파일과 그 구조

    • J2EE Web Application은 J2EE Web Container에 배포되고 등록되기 전에 특수한 아카이브 파일로 패키징 해야 함.
    • .war 확장자를 가짐

Overview of JDBC Specification

  • JDBC

    • java 환경에서 Database를 연결할 수 있는 기능
    • SQL문들을 JDBC 인터페이스들에 있는 method의 인수로서 사용할 수 있게 해주는 SQL level의 Java API
  • 사용이유

    • 재사용성, 독립성, 관계형 데이터의 쉬운 객체화, 분산 컴퓨팅 환경(확장성)

DataSource Specification

  • DataSource Specification

    • DataSource 물리적인 데이터 자원에 접속하기 위한 요소
    • DriverManager의 대한으로 DataSource 객체가 사용된다
    • DataSource interface를 구현한 이 객체는 Java Naming and Directory(JNDI) API를 기반으로 하는 naming service에 등록이 되어야 한다.
  • DataSource Advantage

    • DriverManager 처럼 Application단에서 driver정보를 Hard Coding하지 않아도 된다.
    • DataSource 기능은 개발자들엑 DataSource class를 구현하여 connection pooling과 distributed transaction과 같은 기능들을 이용할 수 있게 해준다.
    • J2EE의 표준이므로 모든 WAS에서 동일한 코드를 사용
    • 다른 JVM에서도 호출하여 사용할 수 있다.
  • DataSource 4 type

    • DataSource : 사용자들을 위해 Connection을 반환
    • ConnectionPoolDataSource : Connecton Pool로부터 사용자들을 위해 Connection을 반환한다.
    • XADataSource : XA연결 pool로부터 사용자들을 위해 분산/전역 Transaction 역할을 하는 connection을 반환한다.
    • LocalXADataSource : XA연결 Pool로부터 사용자들을 위해 지역 Transaction 역할을 하는 connection을 반환한다.

DataSource 연동

  • JEUS Server에서 DB Connection Pool

    • DataSource, ConnectionPoolDataSource, XADataSource, LocalXADataSource
    • 반드시 $JEUS_HOME\lib\datasource 아래에 사용하려는 JDBC direver를 놓아야 한다.
  • DB 연동 테스트

    • DataSource 생성 및 호출

      • JEUS 웹 관리자를 이용하여 생성
      • Applicaton 생성이 DataSource 호출 :  JNDI에서 검색 가져와서 사용한다.

Cooki & Session

  • Cooki란?

    • HTTP 프로토콜을 이용하면서 상태에 대한 보존을 위해서 사용
    • 서버에 클라이언트의 정보를 담아두지 않고 클라이언트 자신들에게 그 정보를 저장
    • 서버와 클라이언트 간 이름/값의 쌍으로 쿠기 교환
  • Cookies

    • Client에 저당되는 간단한 정보
    • Server는 Cookie를 저장하는 요청을 보낸다

      • Brower는 Cookie를 받아들일 수 있고, 거절할 수 있다,
      • Cookie의 사용여부는 Client에서 설정
    • javax.servlet.http.Cookie
  • How to Use Cookie

    • Cookie의 전송

      • Cookie 객체 전송, Attribute를 Setting, Cookie 전송
    • Cookie로부터 정보를 얻어내는 방법

      • 사용자의 Request에서 모든 Cookie의 정보 검색, 서버와 관련된 Cookie의 이름만을 검색, 검색된 Cookie의 이름에 대한 값을 얻어온다.
  • To Send a Cookie

    • Cookie 생성

      • Cookie ck= new Cookie("data", new java.util.Data().toString()) ;
    • 유효기간 설정(단위 : second)

      • ck.setMaxAge(500) ;
    • Cookie 설정

      • res.addCookie(ck) ;
  • To Get information from a Cookie

    • Get Cookies

      • Cookie all[]= req.getCookie() ;
  • Session 이란?

    • HTTP 프로토콜을 이용하면서 상태에 대한 보존을 위해서 사용
    • 사용자의 브라우저와 서버 간의 논리적인 연결
    • 서버에서는 요청에 실려져 온 브라우저에 대한 정보를 알 수 있음
    • 서버가 자신에게 접속한 클라이언트의 정보를 갖고 있는 상태
    • **

      • HttpSession session= request.getSession() ;  => 세션이 없으면 새로 색션을 생성
      • HttpSession session= request.getSession(false) ; => 세션이 없으면 null를 반환
    • 브라우저에서 쿠키 사용을 막아 놓았을 경우 세션을 사용하지 못한다.

      • URL Rewrite 방법이 있지만, URL에 정보가 노출되므로 보안상 문제 발생
  • Sessions

    • Browser에 의해 만들어진 HTTP Transaction들과 연관된 데이터들의 집합으로 서버에 상태정보가 저장됨
    • javax.servlet.http.HttpSession
  • How to Use Session

    • Create a Session

      • HttpSession session= req.getSession() ; /or/ req.getSession(false) ;
    • Obtain the Session and Check if it exists

      • HttpSession session= req.getSession() ; if(!session.isNew()) {} /or/ req.getSession(false) ; if(session != null) {}
  • Additional Guidelines

    • Session의 정보는 사요중인 브라우저의 모든 서블릿에 적용
    • Session의 무효화 : session.invalidate() ; , 보통 Logout 버튼과 연결시켜 사용
    • Session은 browser의 비활성화로 무효화 할 수 있다.
  • Session의 삭제

    • 장시간 비활성(inactive)상태인 경우 컨테이너는 세션을 삭제 => 세션 타임 아웃 설정
    • 세션 타임 아웃 설정

      • DD에 세션 타임아웃 설정 => web.xml에 정의
      • WEBMain.xml 파일에 세션 타임 아웃 설정 => <time-out> 값이 -1 이면 세션은 계속 유지 된다.
      • 특정 세션만 타임아웃 설정 => Servlet/JSP 파일에서
  • Cookie와 Session 비교

    • Cookie : Cookie class, 문자열 형태만 저장 가능, 클라이언트에 저장
    • Session : HttpSession inferface, 자바에서 사용되는 모든 객체 저장 가능, Seesion ID만 클라이언트에 저장, 실제적인 값을 서버에 저장,

Session Clustering

  • Session Tracking

    • 현재 작업하는 WebServer가 비정상 종료 되었을때, 다른 동일 작업 WebServer에서도 해당 작업(Session)을 유지하기 위해서
  • Tracking 종류

    • 세션 라우팅

      • WebtoB X JEUS 연결 상태에서 사용
      • 장점 : 알고리즘 간단, 시스템 리스소를 적게 소비,
      • 단점 : 웹 컨테이너 장애 발생시 세션 객체를 복구 할 수 없다
    • 중앙 집중식 세션서버

      • WebtoB X JEUS - Session Server 연결 상태에서 사용
      • 장점 : Web 서버는 현재 요청된 클라이언트 요청을 어떤 Web Container로 보내야 할 지 생각하지 않아도 된다.
      • 단점 : 세션 객체 및 세션 객체 내부의 멤버 인스턴스들이 serializable 해야 한다.
    • 혼합방식

      • 세션 라우팅 + 중앙 집중식
      • 두 가지 방식의 장점을 모두 살림. 안정한 백업도 보장
    • 분산 세션 방식

      • 각 Web Container마다 세션 서버를 두는 방식
      • 대규모 환경에서 유용
  • 세션의 설정

    • 어플리케이션 단위 : J2EE specification에서 정의, web.xml에서 설정
    • ContextGroup단위 : JEUS 웹 컨데이너에서 사용, WEBMain.xml에서 설정
    • 분산 세션 : JEUSMain.xml, WEBMain.xml에서 설정
  • 세션 타임 아웃 설정

    • JEUS에서 세션 타임아웃 과 관련된 설정

      • web.xml : <web-app><session-config><session-timeout>
      • WEBMain.xml : <web-container><context-group><session-config><timeout>
      • JEUSMain.xml : <jeus-system><node><session-server><session-manager><remove-to>

 

출처 : http://blog.naver.com/PostView.nhn?blogId=seong_han&logNo=110033488465

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927779
1186 인터넷 구글 개인정보 삭제요청 방법 file JaeSoo 2013.01.08 6816
1185 윈도우즈 윈도우 명령어로 간단하게 컴퓨터 자동종료하기 file JaeSoo 2013.01.08 5557
1184 소프트웨어 V3 광고 않뜨게 하기 file JaeSoo 2013.01.08 3714
1183 경제 연말정산 핵심포인트 JaeSoo 2013.01.05 2957
1182 하드웨어 터치로 컴퓨터 켜기 file JaeSoo 2013.01.04 4538
1181 웹 프로그래밍 Sketchbooks 레이아웃 for XE 태그 위젯을 설정하여도 홈페이지에 태그가 보이지 않습니다. file JaeSoo 2013.01.03 3322
1180 육아,교육 하루종일 붙어있는 아이를 위한 처방 file JaeSoo 2013.01.03 4078
1179 웹 프로그래밍 CSRF 공격에 대비한 XE 보안 체계에 대한 이해관리자 JaeSoo 2013.01.01 2634
1178 웹광고 알라딘 TTB - 악성코드 구글 검토 요청 방법 file JaeSoo 2012.12.31 4457
1177 논문 시간의 복잡도 총정리 (알고리즘) file JaeSoo 2012.12.31 4176
1176 자동차 엔진오일 종류 JaeSoo 2012.12.29 4227
1175 네트워크 웹사이트 로딩시간-웹페이지의 모든 개체 로딩시간 테스트 file JaeSoo 2012.12.28 3471
1174 네트워크 웹사이트 블로그 로딩속도 테스트를 할수있는 웹서비스 모음 file JaeSoo 2012.12.28 3232
1173 하드웨어 인텔® 가상화 기술 적용 프로세서 제품군 목록 JaeSoo 2012.12.27 4244
» 소프트웨어 분산 시스템의 소개(JEUS & WebtoB) JaeSoo 2012.12.27 4748
1171 하드웨어 PC의 WOL 기능 설정하기 file JaeSoo 2012.12.26 4028
1170 자동차 네비게이션 AUX 선 연결시 알터노이즈에 대하여 JaeSoo 2012.12.26 4284
1169 자동차 AUX 노이즈 해결 알터노이즈 file JaeSoo 2012.12.26 4499
1168 하드웨어 Asrock P55 Pro 바이오스 설정 설명 file JaeSoo 2012.12.25 4250
1167 하드웨어 Vmware Bios Upgrade (No-Execute Memory Protection) JaeSoo 2012.12.25 4384
Board Pagination Prev 1 ... 60 61 62 63 64 65 66 67 68 69 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너