본문 바로가기

Dev...

[펌] 어떻게 객체를 파괴할 것인가? 어떻게 객체를 파괴할 것인가? Java 플랫폼의 모든 배열과 객체들은 '힙(heap)'이라는 메모리 공간에 저장된다. new 키워드를 쓸 때마다 힙의 새로운 메모리가 객체에 할당된다. 하지만, Java는 C++ 같은 언어와 달리 할당한 메모리를 명시적으로 반환하는 방법이 없다. 사실, 이 작업은 가비지 컬렉터가 담당한다. 가비지 컬렉터는 아주 낮은 우선순위를 가진 백그라운드 스레드로 동작하면서 어떤 객체의 메모리를 반환해야 하는지 계속 검사한다. 만약, 메모리를 반환해야 하는 객체를 찾았고 시간도 충분하다면 가비지 컬렉터는 종료자를 수행하는 것과 같이 몇 가지 필요한 작업을 처리하고 객체를 파괴한 다음에 이 객체의 메모리를 힙으로 반환한다. 프로그래머가 무엇을 하든 가비지 컬렉터에게 이 작업을 강제로 시.. 더보기
[펌] 어떻게 객체를 생성할 것인가? 어떻게 객체를 생성할 것인가? 객체지향 세계에서 가장 중요한 객체는 어떻게 생성하는 것이 좋을까? 상속보다는 컴포지션이 권장되면서 객체를 생성하는 방법은 더욱 더 중요해지고 있다. 객체를 생성하는 가장 흔한 방법은 public 생성자를 쓰는 것이다. 이 방법을 쓰면 반드시 생성하려는 객체의 클래스 이름이 명시적으로 나오게 되므로 객체 생성이 특정 구현에 완전히 얽매이게 된다. 따라서 이렇게 객체를 생성하면 나중에 다른 구현체로 바꾸려 할 때 문제가 생긴다. 또, 싱글톤(singleton)처럼 객체 수를 제한할 필요가 있다면 public 생성자로 객체를 생성하지 못하게 막아야 한다. 객체 생성은 어떻게 제어할까? 우선 팩토리 메소드라는 방법을 살펴보자. 팩토리 메소드는 단순하게 객체 생성을 책임지는 메소드.. 더보기
[펌] ConnectionPooling Connection pooling is a mechanism whereby when an application closes a connection, that connection is recycled rather than being destroyed. Since establishing a connection is an expensive operation, reusing connections can improve performance dramatically.This ConnectionPooling Sample demonstrates how connection pooling mechanism can be used in the middle tier. Here, a servlet will create a Conn.. 더보기
[펌] [jeus]dataSource 설정. localXADataSource oracle kbidb oracle.jdbc.pool.OracleConnectionPoolDataSource LocalXADataSource kbidb oracle.jdbc.pool.OracleConnectionPoolDataSource qmtm qmtm 1521 xxx.xxx.xxx.xxx thin 3 3600000 false ------------------------------------------------------------------------------datasource oracle kbidb oracle.jdbc.pool.OracleConnectionPoolDataSource DataSource kbidb oracle.jdbc.pool.OracleConne.. 더보기
[펌] [Jakarta Commons] Using a Configuration Factory Using a Configuration Factory This section explains how a ConfigurationFactory object is setup that provides access to a collection of different configuration sources. It also discusses using Hierarchical and Structured datasets. The configuration definition file When a single configuration file is the only source of configuration data it is very simple to load it using a PropertiesConfiguration.. 더보기
[펌] JTS 이해하기 - 트랜잭션에 대한 소개 자바 트랜잭션 서비스는 J2EE 아키텍처의 핵심 요소이다. 자바 트랜잭션 API와 함께 자바 트랜잭션 서비스는 모든 종류의 시스템 및 네트워크 장애에 대해 강력한 분산 애플리케이션을 구축하도록 해준다. 트랜잭션은 신뢰성 있는 애플리케이션을 구축하기 위한 기초적인 구성 요소이다. 트랜잭션적인 지원 없이 신뢰성 있는 분산 애플리케이션을 작성하는 것이 터무니없이 어려운 일이다. 다행히도 JTS는 자신의 대부분의 작업을 개발자에게 투명하게 수행한다.; J2EE 컨테이너는 트랜잭션 구분과 자원 사용을 거의 보이지 않게 수행한다. 이번 3회로 구성된 연재물 중 첫 회에서는 트랜잭션이 무엇이고 왜 이들이 신뢰성 있는 분산 애플리케이션 구축에 필수적인지에 대한 기초적인 사항을 다루도록 하겠다. J2EE에 대한 어떤 소.. 더보기
[펌] JTS 이해하기 - 장막 뒤의 마법 Part 1에서 트랜잭션이 무엇이며 신뢰성 있는 분산 애플리케이션 구축에 이들이 필수적인지에 대한 기초적인 사항들을 다루었다. 이번 회에서는 J2EE 애플리케이션이 트랜잭션으로 어떻게 체계화되며, JTS와 J2EE 컨테이너가 트랜잭션 구분, 리소스 등록, 트랜잭션 전파등을 포함한 트랜잭션 서비스들을 컴포넌트 프로그래머들에게는 거의 보이지 않게 만드는 방법을 검토하겠다. Part 1에서 트랜잭션을 검토하고 그들의 기본 특성인 원자성, 일관성, 격리성 및 영속성을 살펴보았다. 트랜잭션은 기업 애플리케이션의 기초적인 구성 요소이다. 트랜잭션 없이는 내결함성을 갖춘 기업 애플리케이션의 구축이 거의 불가능할 것이다. 다행히도 Java Transaction Service (JTS)와 J2EE 컨테이너는 여러분을 위.. 더보기
[펌] 싱글톤 구현 여러가지 쓰레드 세이프 싱글톤 구현 소스와 그들의 성능을 평가한 자료입니다. Doug Lea 라는 분이 정리한 자료입니다. 너무 이론만 파고드는것도 재미없겠죠..? 위의 html은 성능을 평가한 문서이고 두번째의 java파일은 자바 소스입니다.. http://www.cs.umd.edu/~pugh/java/memoryModel/DCL-performance.html http://www.cs.umd.edu/~pugh/java/memoryModel/archive/att-0673/01-TSS.java 저도 지금 소스를 보고 실행해보고 있는데, 너무 감동적이네요.. 위 소스코드내에는 몇가지 싱글톤 구현방법이 나옵니다. 그 각각이 의미하는바는 다음과 같습니다. 1) EagerSingleton static class .. 더보기
[펌] Jakarta Commons Pool The Pool Component Pool provides an Object-pooling API, with three major aspects: A generic object pool interface that clients and implementors can use to provide easily interchangable pooling implementations. A toolkit for creating modular object pools. Several general purpose pool implementations. Releases See the downloads page for information on obtaining releases. Features The org.apache.co.. 더보기
[펌] JNDI Datasource HOW-TO JNDI Datasource HOW-TO목차 Table of Contents소개 Introduction 데이타베이스 커넥션풀(DBCP) 설정 Database Connection Pool (DBCP) Configurations Tyrex 커넥션 풀 Tyrex Connection Pool DBCP를 사용하지 않는 방법들 Non DBCP Solutions OCI 클라이언트로 Oracle8i 연결 Oracle 8i with OCI client 일반적으로 일어날 수 있는 문제 Common Problems 소개 IntroductionJNDI Datasource 설정은 JNDI-Resources-HOWTO에 상세하게 나와있지만 tomcat-user메일링리스트에서 보면 각각의 설정이 다소 까다롭다고 합니다. 많이 쓰이.. 더보기