본문 바로가기

Dev.../플밍 관련 자료

[펌] [EJB 기반 프로젝트 수행 가이드] ② 세션빈에서의 트랜잭션 관리김주현 (ERP 개발자)2004/03/30① 세션빈에서의 DB 접근전략 및 엔터티빈 사용시 주의사항 ② 세션빈에서의 트랜잭션 관리 ③ 비즈니스 프로세스 구현 최적화하기 ④ 능률 높여주는 유틸리티를 사용하자 지난 강좌에서는 세션빈 내에서 DB를 핸들링하는 데에는 JDBC 드라이버를 이용한 Connection 객체를 사용하는 방법과, 엔터티빈을 이용하는 방법이 있다고 언급했다. 중요한 점은 두가지 방법을 혼용하는 것이 아니라 엔터티빈 사용시 발생하게 되는 문제점을 미리 알고 엔터티빈 사용을 지양하자는 것이다. 지난번 강좌에 이어 엔터티빈 사용을 지양할 수 밖에 없는 사례 한 가지를 더 예로 들겠다. 통상 SI 프로젝트에서 인사시스템과 같이 개인의 정보보안이 엄격히 다루어져야 하는 성.. 더보기
[펌] [퍼옴]J2EE와 애플리케이션개발속의 디자인 패턴 J2EE의 개론과 EJB개념, 구현시의 디자인패턴적용등에 대해 실사례를 들어쉽게 풀어낸 자료입니다. J2EE 플랫폼이 제공하는 여러 제품, 표준 등을 살펴보고 그 곳에서 제시되는 아키텍처를 활용하는 것은 선택이 아닌 필수적 상황으로 점차 변하고 있습니다. EJB를 설명하기 전에 EJB를 포괄하는 전체적인 틀로서의 J2EE를 소개하고 있고,디자인 패턴의 중요성을 설명하고 있습니다. 사실, 디자인 패턴이 또 다른 앤티패턴(Anti-pattern)이 될 수도 있습니다.즉, XP(eXtreme Programming) 진영에서 지적하는 것처럼, 디자인 패턴이 최적화된 시스템을 만들기 보다는 막연한 확장 가능성을 위해 많은 시간을 투입하고, 소프트웨어의 복잡도만을 증가시키는 최악의 상황을 연출해 내는 걸림돌이 될 .. 더보기
[펌] 배치디스크립터 * EJB를 첨 사용했을 때 배치 스크립에 대하여 그리 크게 신경쓰지 않았다...간단한 stateless 세션빈으로만 작성했으니까.. 그때 궁금했던 것중 하나가 다른 빈은 어떻게 참조할까였따...분명 될것 같은데....잘 안되고 그렇다고 차근차근 공부할 시간은 없었고.... 생각나서 정리했따.. 첨부 파일은 배치스크립터에 대한 좀더 자세한 자료임 ----------------------------------------------------------------------------------------- 배치디스크립터 배치디스크립터에 포함된 설정정보는 1. 구조정보l 엔터프라이즈 빈 유형(Session, Entity, Message Driven Bean) l 홈 인터페이스 l 리모트 인터페이스 l 엔터프.. 더보기
[펌] 저도 EJB로 개발하고 있는데.. EJB는 왜 필요할까요? EJB는 "대규모이고 구조가 복잡한 분산 객체 환경"을 쉽게 구현하기 위해서 등장했습니다. 이것이 과거, 현재, 미래를 통틀어 EJB의 제 1 목표이고, 존재의 의미입니다. 따라서, EJB를 사용할 것인지 말 것인지에 앞서, 개발자들은 전체 아키텍쳐를 분산 객체 환경으로 가져갈 것인가 말 것인가를 고려해야 합니다. 만일, 분산 객체 환경이 필요 없다면, EJB를 써야 할 필요성의 70퍼센트는 감소됩니다. 그렇다면, 분산 환경은 왜 필요한걸까요? 분산 환경은 비즈니스 로직과 UI로직을 서로 다른 머신(또는 프로세스)로 분리시킴으로써 비즈니스 로직의 재사용성과 시스템 아키텍쳐의 유연성을 높이기 위해서 등장했습니다. 이 두 조건은 시스템이 커지고 복잡해질 수록 중요합니다. 그래서 대규.. 더보기
[펌] Custom Tag Library (2) - Tag Library Descriptor Custom Tag Library (2) - Tag Library Descriptor Tag Library Descriptor(태그 라이브러리 설명자)태그 핸들러 클래스를 만들었다면 이제 아래의 소스 5.2와 같이 태그 라이브러리 설명자 파일을 만들어야 한다.소스 5.2 taglibExample.tld 1.0 1.1 jspace JavaServer Pages tag library Example test com.boolpae.jsp.CustomTagEx Simple example empty 보시다시피 소스 5.2의 태그라이브러리 설명자 파일은 xml 문서이다. xml에 대해서 여기서는 설명하지 않을 것이며 커스텀 태그를 사용하기 위해서 xml을 모두 알 필요는 없다. 정말로 어렵지 않은 부분이다. Html.. 더보기
[펌] Custom Tag Library (1) - Tag Handler Class Custom Tag Library (1) - Tag Handler Class 우리는 javabeans를 사용함으로써 어느 정도 복잡한 행동들을 jsp 페이지에서 분리시켜 독립적인 일을 하도록 만드는데 성공했다. 하지만, 아직 부족하다. Bean은 단순히 로직을 처리할 수는 있어도 결정적으로 jsp content를 조작할 수 가 없다. 이것은 부가적으로 다시 scripting 요소들로 하여금 jsp 페이지를 점령하도록 만든다.(없을때 보다는 많이 나아졌지만…) 커스텀 태그는 한번 더 여러분들을 스크립팅 요소들로부터 자유롭게 만들어 준다. 이것은 디자이너와 개발자간의 역할 분담을 점점 더 명확하게 만들어 주게 되는 것이다. 커스텀 태그는 여러분이 마음대로 태그를 정의해서 작동하게 해주는 태그 확장 메커니즘이.. 더보기
[펌]Jakarta Digester 학습하기 Jakarta Digester 학습하기hanbit (2002-11-05 17:04:54)저자: 필립(Philipp K. Janert Ph.D), 역 김대곤 XML문서를 문서와 대응되는 계층구조를 가진 자바 빈 객체로 변환하는 것은 분명 빈번하게 요구되는 작업 중의 하나이다. 필자가 이전에 논했었던 'Simple XML Parsing with SAX and DOM'라는 기사에서 SAX와 DOM이라는 표준 API를 사용하여 이러한 작업을 수행하는 방법에 대해 기술하였다. SAX과 DOM이 강력하고, 유연함에도 불구하고, 실제로 이 두 가지 API는 특정한 작업을 간단하게 수행하기에는 너무 저수준인 API이다. 뿐만 아니라 unmarshalling 작업(XML문서를 객체로 변환하는 작업) 자체에 상당한 코딩을.. 더보기
[펌] Do you know your data size? ecently, I helped design a Java server application that resembled an in-memory database. That is, we biased the design toward caching tons of data in memory to provide super-fast query performance. Once we got the prototype running, we naturally decided to profile the data memory footprint after it had been parsed and loaded from disk. The unsatisfactory initial results, however, prompted me to .. 더보기
[펌] 어떻게 객체를 생성할 것인가? 어떻게 객체를 생성할 것인가? 객체지향 세계에서 가장 중요한 객체는 어떻게 생성하는 것이 좋을까? 상속보다는 컴포지션이 권장되면서 객체를 생성하는 방법은 더욱 더 중요해지고 있다. 객체를 생성하는 가장 흔한 방법은 public 생성자를 쓰는 것이다. 이 방법을 쓰면 반드시 생성하려는 객체의 클래스 이름이 명시적으로 나오게 되므로 객체 생성이 특정 구현에 완전히 얽매이게 된다. 따라서 이렇게 객체를 생성하면 나중에 다른 구현체로 바꾸려 할 때 문제가 생긴다. 또, 싱글톤(singleton)처럼 객체 수를 제한할 필요가 있다면 public 생성자로 객체를 생성하지 못하게 막아야 한다. 객체 생성은 어떻게 제어할까? 우선 팩토리 메소드라는 방법을 살펴보자. 팩토리 메소드는 단순하게 객체 생성을 책임지는 메소드.. 더보기
[펌] 어떻게 객체를 파괴할 것인가? 어떻게 객체를 파괴할 것인가? Java 플랫폼의 모든 배열과 객체들은 '힙(heap)'이라는 메모리 공간에 저장된다. new 키워드를 쓸 때마다 힙의 새로운 메모리가 객체에 할당된다. 하지만, Java는 C++ 같은 언어와 달리 할당한 메모리를 명시적으로 반환하는 방법이 없다. 사실, 이 작업은 가비지 컬렉터가 담당한다. 가비지 컬렉터는 아주 낮은 우선순위를 가진 백그라운드 스레드로 동작하면서 어떤 객체의 메모리를 반환해야 하는지 계속 검사한다. 만약, 메모리를 반환해야 하는 객체를 찾았고 시간도 충분하다면 가비지 컬렉터는 종료자를 수행하는 것과 같이 몇 가지 필요한 작업을 처리하고 객체를 파괴한 다음에 이 객체의 메모리를 힙으로 반환한다. 프로그래머가 무엇을 하든 가비지 컬렉터에게 이 작업을 강제로 시.. 더보기