2016년 7월 9일 토요일

디자인 패턴 - #2 J2EE Design Pattern 개요

#2 J2EE Design Pattern 개요

Presentation Tier Pattern

  • Decorating Filter(Intercepting Filter) : 웝 요청 전후의 기능을 확장 및 변경
    • Filter 라는 클래스가 사용
    • 한글 인코팅 처리 시
  • Front Controller : 웹 요청을 서비스 하는 Entry point 역할
    • 고객 , 운영자
  • View Helper : View를 단순화 시키는 역할
    • 모듈화를 통해서 나눔
  • Composite View : 재사용 가능한 view를 조합하여 새로운 view
    • include : top , left , bottom
  • Service To Worker : Front Controller 와 View Helper을 이용 비지니스 프로세스 역할이 Controller에게 있음
    • model2 : mvc 모델에서 적용
  • Dispatcher View : Front Controller 와 View Helper을 이용 비지니스 프로세스 역할이 View에게 있음
    • view : jsp
    • model1에서 적용

Business Tier : EJB (Presentation 와 연동)

  • Business Delegate
    • 비지니스 컴포넌트와의 인터페이스를 제공
    • Presentation 과 Business의 의존성 감소
  • Value Object(Transfer Object)
    • Data를 큰 단위(coarse-grained) 접근 방법을 사용함으로서 네트워크 호출을 감소
    • Tiers 간의 Data 전송
  • Session Facade : Workflow를 집중화하고 business 객체의 복잡성을 은닉화
    • 비지니스 티어의 진입자 역할을 수행
  • Aggregate Entity(Composite Entity) : Coarse-grained Entity beans을 모델링할 수 있는 best practice를 제공
    • Entity Bean 묶어주는 역할?
    • EJB 1.1 에서는 Aggregate 라고 함
  • Value Object Assembler : 여러 개의 value object를 조립하는 역할 제공
  • Value List Handler : DAO을 통해 얻는 데이터를 캐싱
    • 예) 게시판 페이지 뷰 할때 캐싱하는 역할을 수행
  • Service Locator : 중복된 JNDI lookup 처리만 담당
Integration Tier Patterns
  • Data Access Object : 테이터베이스의 접근 로직을 분리
    • 데이터 베이스에만 접근하는 클래스 생성
  • Service Activator (Message Facade) : 비동기처리를 담당

J2EE Pattern catalog

J2EE_Pattern_catalog.png
좀더 최신 형태 구조 설명 (참고)
출처 - OJTKOREA(링크)

디자인 패턴 -#1 디자인 패턴 개요

#1. 디자인 패턴 개요

문제 해결을 위한 가장 효율적인 방법을 정형화 시킴

특징

  • 효율적인 방법을 경험 할 수 있음
  • best Practices
  • 재사용
  • 구조적인 형태
  • 큰 문제 해결에 용이

GoF : 23 패턴

  • 3가지 분류
    • 생성 패턴 (Creational)
    • 구조 패턴 (Structure)
    • 행위 패턴 (Behavioral)

GoF와 J2EE 패턴 서로 다른 것이 아니라 연관성 있음

디자인 패턴 Level 별 분류

  • Architectural 패턴
    • 고수준 H/W , S/W 구조
    • 비기능적 요구(성능) 관련
  • Desing Pattern
    • 중간 단계 구조
    • 기능적
  • Idioms
    • 저 수준 구조
    • language-specific 특징

디자인 패턴 요소

  • 패턴명 - 의사소통 역할
  • 문제 - 적용시켜야 할 조건상태
  • 해법 - 문제해결을 위한 적용 방법
  • 결과 - 패턴 적용후 발생된 조건(trade off) 및 결과

Logical 구조 Tier

Tier
요소
영역
Client
App Client, HTML , swing , applet

Presentation
JSP / Servlet
J2EE 패턴
Business
EJB and Business Object
Integration
JMS , JDBC ,Connectors
Resource
DB , 외부 시스템

참고도서

# core j2ee patterns - http://www.corej2eepatterns.com/index.htm
출처 - OJTKOREA(링크)

2016년 7월 8일 금요일

JDK 1.4 튜토리얼 - 1장(2/2)

CHAPTER 1 . 기본 NIO(New Input/Output) (2/2)

파일 잠금 기능

서로 다른 프로세스나 쓰레드에 의한 파일 접근을 막기 위해 전체 혹은 특정 부분을 잠금 것
lock 종류
  • lock 설명
    • mandatory lock - 필수 잠금
    • advisory lock - 권고 잠금
      • 다른 스레드가 객체의 필드를 수정하지 것을 막지 못하며, 단지 락을
        획득하지 못하게 함
  • 파일 잠금 기능
    • 배타적 잠금 : synchronized 키워드와 비슷, 다른 스레드가 유사한 락을 얻지 못하게 함
      • 쓰기 작업 시
    • 공유 잠금 : 잠금을 얻을 수 있으나 배타적 잠금은 얻지 못함
      • 읽기 작업 시
lock 이용
  • 파일 전체 잠금
  • 파일 부분 잠금
  • OverlappingFileLockException 발생하는 경우
    • 동일한 JVM 에서 배타적 잠금 덮어쓰는 경우
    • 배타적인 잠금과 공유 잠금이 겹치게 생성하려는 경우
  • 특정 OS에서는 공유 잠금을 지원 하지 않음
    • java.nio.channels.FileLock.isShared() : 잠금 유형 확인
      • true : 공유 잠금
      • false : 배타적 잠금
lock 획득
  • FileChannel 객체에 생성
  • 두 가지 획득 방법
    • FileChannel.lock()
      • lock이 획득될 때 까지 블록킹
    • FileChannel.tryLock()
      • lock이 곧바로 획득되지 않는 경우에 null을 리턴
  • lock 파라미터 설명
    • FileChannel.lock(long position, long size, boolean shared) :
      • position - 시작 위치 (바이트 단위)
      • size - 길이 (바이트 단위)
      • shared - true : 공유 , false : 배타적
FileOutputStream fo = new FileOutputStream("test.txt");
FileChannel fc = fo.getChannel();
FileLock fl = fc.lock();  //방법1 - 전체 잠금
FileLock fl = fc.lock(0L,Long.MAX_VALUE ,false); //전체 잠금 요청
  • 해지 방법 ( 두 가지)
    • java.nio.channels.FileLock.relase() 사용
    • FileChannel 을 종료
휴대성 (호환성)에 고려
  • 파일 락은 OS에 구현에 따라 종속 적인
  • 다양한 OS을 만족 시키는 방법
    • 배타적 잠금을 사용
    • 모든 잠금을 advisory(권고)로 취급
    • 잠금은 동일한 프로세스 내의 쓰레드들에 의해 영향을 받는다.


출처 : 인포북 JDK 1.4 Tutorial