ALTIBASE 사용자가이드 Templete

Similar documents
ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

단계

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ALTIBASE 사용자가이드 Templete

10.ppt

ALTIBASE 사용자가이드 Templete

슬라이드 1

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

ALTIBASE 사용자가이드 Templete

chapter1,2.doc

J2EE Concepts

FileMaker 15 ODBC 및 JDBC 설명서

Connection pool 엑셈컨설팅본부 /APM 팀박종현 Connection pool 이란? 사용자의요청에따라 Connection을생성하다보면많은수의연결이발생했을때서버에과부하가걸리게된다. 이러한상황을방지하기위해미리일정수의 Connection을만들어 pool에담아뒀다

.

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 18-DataSource.ppt

FileMaker ODBC 및 JDBC 가이드

쉽게 풀어쓴 C 프로그래밊

ALTIBASE WebLogic 연동 가이드

FileMaker ODBC and JDBC Guide

PowerPoint 프레젠테이션

JDBC 소개및설치 Database Laboratory

11_oh.hwp

Data Provisioning Services for mobile clients

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

Interstage5 SOAP서비스 설정 가이드

歯JavaExceptionHandling.PDF

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

Analyze Connection Failover Options.ppt

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ALTIBASE 사용자가이드 Templete

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

untitled

ALTIBASE WebLogic 연동 가이드

Chapter 1

rmi_박준용_final.PDF

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

ALTIBASE 사용자가이드 Templete

교육2 ? 그림

02 C h a p t e r Java

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

FileMaker ODBC and JDBC Guide

PowerPoint 프레젠테이션

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

MasoJava4_Dongbin.PDF

1

RHEV 2.2 인증서 만료 확인 및 갱신

C++ Programming

JUNIT 실습및발표

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Windows 8에서 BioStar 1 설치하기

JMF2_심빈구.PDF

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

untitled

JMF3_심빈구.PDF

Interstage4 설치가이드

<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770>

KYO_SCCD.PDF

untitled

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Tibero

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

ALTIBASE 사용자가이드 Templete

14-Servlet

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

ALTIBASE 사용자가이드 Templete

PowerPoint Template

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

자바-11장N'1-502

1217 WebTrafMon II

공개 SW 기술지원센터

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

단계

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Application 에서 Parameter 값을받아 JDBC Interface 로보내게되면적절한 JDBC Driver 를통해 SQL 을 Database 로보내주게되고결과를받아서사용자에게보여주게된다. 2-2 JDBC Interface JDBC 의핵심 Interface

Microsoft PowerPoint - 04-UDP Programming.ppt

Spring Boot

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

API 매뉴얼

준비사항 } 실습조건 } MS-SQL Server 에연결가능한컴퓨터 } 실습용서버혹은별도의 MS-SQL 서버 } Northwind 데이터베이스 } MS-SQL 2000 에제공되는예제데이터베이스 } MS-SQL 2008 에는 Northwind 가기본으로제공되지않기때문에실

뇌를 자극하는 JSP & Servlet 슬라이드

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Mango220 Android How to compile and Transfer image to Target

JAVA PROGRAMMING 실습 08.다형성

91 // 물리적으로닫지않고 cache에반환만한다. opstmt.close(); } opstmt.setint(3, lowerlimit); opstmt.setint(4, upperlimit); // Execute query rset = opstmt.executequery

PowerPoint 프레젠테이션

슬라이드 1

untitled

Cloud Friendly System Architecture

untitled

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Transcription:

Real Alternative DBMS ALTIBASE, Since 1999 ALTIBASE & TOMCAT 연동가이드 ALTIBASE 5 2010. 01 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved.

Document Control Change Record Date Author Change Reference 2010-01-25 snkim Created 2014-03-31 Uijin.lee modify Reviews Date Name (Position) Distribution Name Location ALTIBASE & TOMCAT 연동가이드 2 page of 25

목차 개요... 4 TOMCAT 설치... 5 TOMCAT 다운로드... 5 TOMCAT 설치... 5 환경변수설정... 5 TOMCAT 구동... 5 TOMCAT 종료... 6 JDBC DRIVER 설정... 7 ALTIBASE JDBC driver 파일을얻는방법... 7 ALTIBASE JDBC driver 버전을확인하는방법... 7 JDBC driver 파일을 TOMCAT 에위치... 8 ALTIBASE 와 TOMCAT 의연동... 9 DBCP 방법으로연동... 9 일반 JDBC 방법으로연동... 13 ALTIBASE 의 ConnectionPool 을이용하여연동... 14 FAILOVER CONFIGURATION... 18 FailOver Configuration... 18 TOMCAT 연동시주의사항... 20 사용한 Resource 의반납... 21 버려진 Connection 을제거... 22 TOMCAT 연동시오류사항... 23 No suitable driver... 23 Communication link failure... 23 그외확인사항... 23 첨부예제파일... 24 첨부예제... 24 ALTIBASE & TOMCAT 연동가이드 3 page of 25

개요 본문서는 ALTIBASE 와 TOMCAT 간연동하는방법을기술한문서로 TOMCAT 은 5.5 와 6.0 버전, ALTIBASE 는 5 버전을대상으로작성되었다. ALTIBASE & TOMCAT 연동가이드 4 page of 25

TOMCAT 설치 TOMCAT 설치방법에대해간단히살펴보도록한다. 환경은 Windows 이고 TOMCAT 6.0 제품을설치한다. TOMCAT 을설치하기전에반드시 JRE(Java Runtime Environment) 혹은 JDK(Java Development Kit) 가설치되어있어야한다. TOMCAT 다운로드 http://tomcat.apache.org/download-60.cgi 사이트에방문하여최근 release 된 TOMCAT 바이너리파일을다운받는다. 예를들어, 위홈페이지에서 apache-tomcat-6.0.24.zip 파일을다운받는다. TOMCAT 설치 다운로드한압축파일을적절한디렉토리에푼다. 환경변수설정 다음의환경변수를설정한다. 1. CATALINA_HOME TOMCAT 을설치한디렉토리를지정한다. 2. JAVA_HOME 혹은 JRE_HOME JDK 혹은 JRE 가설치된디렉토리를지정한다. 3. PATH $CATALINA_HOME/bin 디렉토리 (1 번에설정한 TOMCAT 설치디렉토리하위의 bin 디렉토리의경로 ) 를 PATH 에추가한다. TOMCAT 구동 다음의명령어를수행하여 TOMCAT을구동시킨다. $ catalina start 해당명령을실행하면 TOMCAT 구동내용이 display되는별도의창이뜬다. ALTIBASE & TOMCAT 연동가이드 5 page of 25

< 그림 1> TOMCAT 구동화면 TOMCAT 종료 다음의명령어를수행하여 TOMCAT 을종료시킨다. $ catalina stop < 그림 2> TOMCAT 종료화면 ALTIBASE & TOMCAT 연동가이드 6 page of 25

JDBC driver 설정 TOMCAT 에서 ALTIBASE JDBC driver 를적절한곳에위치시켜놓아야 ALTIBASE 와연동이가능하다. ALTIBASE JDBC driver 파일을얻는방법 ALTIBASE 에서제공하는 JDBC driver 는 Altibase.jar 이다. 이파일은 ALTIBASE 가설치되어있는서버의 $ALTIBASE_HOME/lib 디렉토리안에존재한다. Altibase 5 버전부터는 $ALTIBASE_HOME/lib 디렉토리에 Altibase.jar 와 Altibase5.jar 파일이존재하는데, Altibase.jar 는일반 JDBC driver 파일이며, Altibase5.jar 는 ALTIBASE 5 버전과그이하의버전을함께연동하고싶을때사용한다. 따라서하나의 ALTIBASE DB 와연동한다거나, 동일한버전의여러대의 ALTIBASE DB 와연동하기를원한다면일반적으로 $ALTIBASE_HOME/lib/Altibase.jar 파일을사용하면된다. ALTIBASE JDBC driver 버전을확인하는방법 ALTIBASE JDBC driver 버전을확인하는방법은다음의명령어를수행하면된다. $ java jar Altibase.jar JDBC Driver Info : Altibase Ver = 5.3.1.7 for JavaVM v1.4, CMP:5.5.1, $Revision: 14502 $ Jan 3 2010 08:38:29 연동하려는 ALTIBASE DB Server와 ALTIBASE JDBC Driver가호환가능한지확인을위해 ALTIBASE DB Server 버전확인이필요한다. 이때, ALTIBASE DB Server의 cm protocol version과 ALTIBASE JDBC Driver의 CMP가동일하면호환가능하다. $ altibase -v version 5.3.1.7 IBM_AIX_5.3-64bit-5.3.1.7-release-xlC_r (powerpc-ibm-aix5.3.0.0) Jan 3 2010 08:38:40, binary db version 5.3.1, meta version 5.5.1, cm protocol version 5.5.1, replication protocol version 5.3.1 버전이 UP 되면서 JDBC 관련버그가 fix 되었을가능성이있으므로, 일반적으로 ALTIBASE DB Server 의버전과 ALTIBASE JDBC driver 버전을동일하게맞추거나최신의 ALTIBASE JDBC driver 파일을사용하는것을권장한다. ALTIBASE & TOMCAT 연동가이드 7 page of 25

JDBC driver 파일을 TOMCAT 에위치 TOMCAT 에서 ALTIBASE 와연동하기위해 ALTIBASE JDBC driver(altibase.jar) 를적절한곳에위치시켜 TOMCAT 에서자동으로인식할수있도록해야하는데다음중한가지방법으로설정하면된다. 1. Altibase.jar 를 CLASSPATH 에추가 2. Altibase.jar 를 $JAVA_HOME/jre/lib/ext 디렉토리안에위치 3. Altibase.jar 를 $JRE_HOME/lib/ext 디렉토리안에위치 4. Altibase.jar 를 $CATALINA_HOME/common/lib(Ver5.5), $CATALINA_HOME/lib(Ver6.0) 디렉토리안에위치 ALTIBASE & TOMCAT 연동가이드 8 page of 25

ALTIBASE 와 TOMCAT 의연동 ALTIBASE 와 TOMCAT 을연동하는방법에대해기술한다. 연동하는방법으로는 DBCP 를이용하여연동, 일반 JDBC 를이용하여연동, ATLIBASE 의 ConnectionPool 을이용하여연동하는방법이있다. DBCP 방법으로연동 DBCP(Database Connection Pool) 는 TOMCAT 에서제공하는 Connection Pool 을말한다. 보통 JDBC를이용하여 DB connection을맺을때시간이오래걸리기때문에, 이비용을줄이기위해일정수의 connection을 pool에미리맺어놓고필요시마다 Connection을가져와사용하고사용한후반납하는구조이다. DBCP를이용하면데이터베이스에접속할때마다 connection 객체를생성할필요가없어진다. JNDI Datasource 를구성할때 <Resource> 태그에정의하는속성정보에대해알아본다. DBCP 를이용하여 ALTIBASE 에접속하기위해서는 ALTIBASE 용 DataSource 를 JDNI 에미리등록해놓고웹어플리케이션에서이를 lookup 하여사용하면된다. 연동순서는다음과같다. 1. JNDI DataSource 를구성한다. 1-1. 모든웹어플리케이션에서공유하여사용하도록정의 $CATALINA_HOME/conf/server.xml 파일의 < GlobalNamingResources> 자식노드로 <Resource> 태그를정의한다. 1-2. 설정한웹어플리케이션에서만사용하도록정의 웹어플리케이션 context.xml 파일의 < Context> 자식노드로 <Resource> 태그를정의한다. 2. JNDI Resource 사용설정 2-1. 웹어플리케이션의 web.xml 파일을구성한다. 웹어플리케이션의 WEB-INF/web.xml 파일의 <web-app> 자식노드로 <resource> 태그를정의한다. 2-2. context.xml 파일을구성한다. JNDI DataSource 를 GlobalNamingResources 로정의되어있다면, context.xml 파일의 < Context> 자식노드로 <ResourceLink> 태그를정의한다. 3. 프로그램에서 DataSource 를사용하여 Connection 을얻어온다 각단계에대한자세한설명은아래사항을참고한다. 1. JNDI DataSource 구성 JNDI DataSource 를구성하는방법은 TOMCAT 의전체웹어플리케이션에서사용할수있도록정의하는방법과특정웹어플리케이션에서만사용할수있도록정의하는방법이있다. ALTIBASE & TOMCAT 연동가이드 9 page of 25

먼저전체웹어플리케이션에서사용할수있도록정의하는방법으로는 $CATALINA_HOME/conf/server.xml 에 JNDI DataSource 를구성하는방법으로 JNDI DataSource 에관한정보를 <GlobalNaminngResources> 자식노드로 <Resource> 태그를정의하는것이다. 이렇게정의하면특정웹어플리케이션에국한되어서만사용되는것이아니라, TOMCAT 의전체웹어플리케이션에서사용할수있다. < GlobalNamingResources> <Resource name="jdbc/altibase" auth="container" type="javax.sql.datasource" driverclassname="altibase.jdbc.driver.altibasedriver" url="jdbc:altibase://192.168.1.35:21129/mydb" username="sys" password="manager" maxactive="3" maxidle="2" initialsize="1" defaultautocommit="false" removeabandoned="true" logabandoned="true" removeabandonedtimeout="60" validationquery="select 1 from dual"/> </GlobalNamingResources> * GlobalNamingResources/server.xml 파일참조 또다른방법으로설정한웹어플리케이션에서만사용할수있도록 JNDI DataSource 를설정하는것인데특정웹어플리케이션의 META-INF/context.xml 파일의 < Context > 자식노드로 <Resource> 태그를정의하면해당웹어플리케이션에서만사용이가능하다. <Context> <Resource name="jdbc/altibase1" auth="container" type="javax.sql.datasource" driverclassname="altibase.jdbc.driver.altibasedriver" url="jdbc:altibase://192.168.1.35:21129/mydb" username="sys" password="manager" maxactive="3" maxidle="2" initialsize="1" defaultautocommit="false" removeabandoned="true" logabandoned="true" removeabandonedtimeout="60" validationquery="select 1 from dual"/> </ Context > * WebApplicationContext/META-INF/META-INF/context.xml 파일참조 ALTIBASE & TOMCAT 연동가이드 10 page of 25

<Resouce> 태그에정의하는 DBCP 의속성은다음과같다. driverclassname url username password Altibase JDBC driver class Name ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 maxactive 최대 Connection 수, 0 은무제한. default는 8 initialsize 초기 Connection 수. default는 0 maxidle Pool에 idle하게유지하는최대연결수. default는 8 minidle Pool에 idle하게유지하는최소연결수. default는 0 maxwait 최대연결시도시간 ( 단위 : millisec) -1 은무한대기 Default 는무한대기 validationquery 연결의 validation 을체크하기위해사용하는 SQL 문 반드시최소한 1 개이상의 row 가 return 되는 select 문으로지정 Ex) select 1 from dual defaultautocommit Autocommit 모드를설정. default 는 true defaulttransactionisolation Transaction Isolation level 을설정한다. NONE, REPEATABLE_READ, SERIALIZABLE 의값을설정할수있고, default 는 DB 서버의 default 값을따른다. ALTIBASE 의 isolation level 은 default 로 READ COMMITTED 이다. removeabandoned 버려져서사용되지않는 Connection 에대한제거기능을결정하는속성. default 는 false Connection 이제거되는시점은 Connection 개수가 maxactive 설정된값을초과하여 Connection 을요청한이후이다. maxactive 에도달하지않은시점에는 Connection 을할당받을수있으므로, 사용되지않는 Connection 제거가일어나지않는다. removeabandonedtimeout logabandoned 버려져서사용되지않는 connection 에대한제거가일어나는시간을설정하는속성. default 로 300 초 버려져서사용되지않는 connection 에대한제거시로그에 stack 정보를남길지를결정하는속성. default 로 false 2. JNDI Resource 사용설정 ALTIBASE & TOMCAT 연동가이드 11 page of 25

일반적으로 JNDI Resource 를사용하기위해웹어플리케이션의 WEB-INF/web.xml 파일의 <web-app> 자식노드로 <resource-ref> 태그를정의한다. <resource-ref> </resource-ref> <description>altibase Test</description> <res-ref-name>jdbc/altibase1</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> * res-ref-name 의값은위의 JNDI DataSource 설정단계에서정의한 <Resource> 태그의 name 속성값과동일해야한다. * WebApplicationContext/WEB-INF/web.xml 파일참조 만약, JNDI DataSource 가 GlobalNamingResources 로정의되어있다면 $CATALINA_HOME/conf/context.xml 파일혹은웹어플리케이션 META- INF/context.xml 파일의 < Context> 자식노드로 <ResourceLink> 태그를정의해서 JNDI DataSource 를사용할수있다. CATALINA_HOME/conf/context.xml 파일에정의할경우에는 TOMCAT 전체의웹어플리케이션에서 JNDI Datasource 를사용할수있고, 웹어플리케이션의 context.xml 파일에정의할경우에는설정한웹어플리케이션에서만 JNDI Datasource 를사용할수있다. <Context> <ResourceLink global="jdbc/altibase" name="jdbc/altibase" type="javax.sql.datasource"/> </Context> * global 과 name 의값은위의 JNDI DataSource 설정단계에서정의한 <Resource> 태그의 name 속성값과동일해야한다. * GlobalNamingResources/ GlobalNamingResources /META-INF/context.xml 파일참조 3. 프로그램에서 Connection 얻는방법 프로그램에서다음과같이 JNDI Datasource 를통해 Connection 을얻는다. 이때, java:/comp/env 는 JNDI 를 lookup 할때사용하는 prefix 이다. Context envcontext = (Context)new InitialContext().lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/Altibase"); Connection conn = ds.getconnection(); 또는 Context initctx = new InitialContext(); ALTIBASE & TOMCAT 연동가이드 12 page of 25

DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/Altibase"); Connection conn = ds.getconnection(); 다음은위에설정한 JNDI Datasource 를이용하여 ALTIBASE 와연동하는 jsp 예제프로그램이다. <%@ page import="java.sql.*, javax.naming.*, javax.sql.*"%> <% Context initctx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/Altibase"); Connection conn = ds.getconnection(); Statement stmt = conn.createstatement(); String query = "select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual"; ResultSet rs = stmt.executequery(query); if(rs.next()) { out.println(rs.getstring(1)); } rs.close(); stmt.close(); conn.close();0 %> * GlobalNamingResources/GlobalNamingResources /test.jsp 파일참조 일반 JDBC 방법으로연동 1. JDBC driver 로딩한다. Class.forName( Altibase.jdbc.driver.AltibaseDriver ); 2. Connection 객체얻는다. DriverManager 를통해 Connection 을얻어오는데연결 URL 정보는 jdbc:altibase://ip:port_no/db_name 이다. java.util.properties props = new java.util.properties(); props.put( user, sys ); // 데이터베이스계정 props.put( password, manager ); // 데이터베이스패스워드 String url = jdbc:altibase://127.0.0.1:20300/mydb ; Connection conn = DriverManager.getConnection(url,props); ALTIBASE & TOMCAT 연동가이드 13 page of 25

3. Statement를객체를얻는다. Statement stmt = conn.createstatement(); 4. SQL문을실행한후 ResultSet에담는다. String sql = select to_char(sysdate, yyyy/mm/dd hh:mi:ss ) from dual ; ResultSet rs = stmt.executequery(sql); 5. 작업이완료된후관련된모든객체를 close한다. rs.close(); stmt.close(); conn.close(); 다음은일반 JDBC를이용하여 ALTIBASE와연동하는 jsp 예제프로그램이다. <%@ page import="java.sql.* "%> <% Class.forName("Altibase.jdbc.driver.AltibaseDriver"); java.util.properties props = new java.util.properties(); props.put("user","sys"); props.put("password","manager"); String url = "jdbc:altibase://127.0.0.1:20300/mydb"; Connection conn = DriverManager.getConnection(url,props); Statement stmt = conn.createstatement(); String sql = "select to_char(sysdate,'yyyy/mm/dd hh:mi:ss') from dual"; ResultSet rs = stmt.executequery(sql); if(rs.next()) { out.println(rs.getstring(1)); } rs.close(); stmt.close(); conn.close(); %> ALTIBASE 의 ConnectionPool 을이용하여연동 ALTIBASE 의 ConnectionPool 을이용하는방법은 ABConnectionPoolDataSource 객체를이용하여 Connection 을얻어오면된다. ABConnectionPoolDataSource 클래스는 Altibase.jar 파일에포함되어있으며, Altibase.jdbc.driver 패키지안에존재한다. ALTIBASE & TOMCAT 연동가이드 14 page of 25

ConnectionPool 을 jsp 를로딩할때, 혹은특정 servlet 을호출할때마다생성하는것이아니라, 웹어플리케이션에서공유할수있도록 ServeltConext 에등록하여사용하는것을권장한다. ABConnectionPoolDataSource 을이용하여 ConnectionPool 을생성하고이를 ServeltConext 에등록하고 jsp 페이지에서사용하는방법은다음과같다. 1. ServletContextListener 구현 ServletContextListener 인터페이스를 implements 하는클래스를구현한다. 해당클래스의위치는웹어플리케이션 /WEB-INF/classes 폴더에위치시킨다. contextinitialized 메소드안에서 ABConnectionPoolDataSource 를생성한후 ABConnectionPoolDataSource 클래스의 seturl 메소드를호출하여 Connection url 을셋팅한다. import javax.servlet.*; public class ConnectionPool implements ServletContextListener { private Altibase.jdbc.driver.ABConnectionPoolDataSource mpool; public void contextinitialized(servletcontextevent sce){ ServletContext context = sce.getservletcontext(); String drivername = context.getinitparameter("drivername"); String url = context.getinitparameter("url"); String user = context.getinitparameter("user"); String password = context.getinitparameter("password"); mpool= new Altibase.jdbc.driver.ABConnectionPoolDataSource(); try{ Class.forName(driverName); mpool.setinitialpoolsize(5); mpool.seturl(url+"?user="+user+"&password="+password); context.setattribute("connectionpool",mpool); }catch(exception e){ System.out.println(e); } } public void contextdestroyed(servletcontextevent sce){ if(mpool!= null){ mpool.close(); } } ALTIBASE & TOMCAT 연동가이드 15 page of 25

} * contextinitialized 메소드는웹어플리케이션이로딩될때웹컨테이너에의해자동으로호출되는메소드이다. * ServletContext 의 setattribute 메소드를이용하여 ABConnectionPoolDataSource 객체를등록하면, 웹어플리케이션에서공유하여사용할수있다. * AltibaseConnectionPool/WEB-INF/classes/ConnectionPool.java 파일참조 2. web.xml 에 servletcontextlistener 등록 ServletContextListener 구현한클래스를웹어플리케이션이로딩될때자동으로호출하기위해서는 web.xml 파일에 <listener> 태그를이용하여등록해야한다. 이때 <context-param> 태그를이용하면 ServeltConext 의 getinitparameter 메소드를호출하여 param 값을가지고올수있다. <context-param> <param-name>drivername</param-name> <param-value>altibase.jdbc.driver.altibasedriver</param-value> </context-param> <context-param> <param-name>url</param-name> <param-value>jdbc:altibase://127.0.0.1:20300/mydb</param-value> </context-param> <context-param> <param-name>user</param-name> <param-value>sys</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>manager</param-value> </context-param> <listener> <listener-class>connectionpool</listener-class> </listener> * <context-param> : ServletContext 에서사용할 parameter 값을지정 * <listener-class> : ServletContextListener 구현한클래스 * AltibaseConnectionPool/WEB-INF/web.xml 파일참조 ALTIBASE & TOMCAT 연동가이드 16 page of 25

3. jsp 에서 connection 사용 ServletConext 객체는 jsp 의내장객체중 application 객체로표현된다. application 으로부터 ABConnectionPoolDataSource 객체를얻어와 ABConnectionPoolDataSource 객체의 getconnection 메소드를호출해 Connection 객체를얻어올수있다. <%@ page import="java.sql.*,javax.sql.* "%> <% %> DataSource mpool = (DataSource)application.getAttribute("connectionPool"); Connection conn = mpool.getconnection(); Statement stmt = conn.createstatement(); String sql = "select to_char(sysdate,'yyyy/mm/dd hh:mi:ss') from dual"; ResultSet rs = stmt.executequery(sql); if(rs.next()) { } out.println(rs.getstring(1)); rs.close(); stmt.close(); conn.close(); * AltibaseConnectionPool/test.jsp 파일참조 ALTIBASE & TOMCAT 연동가이드 17 page of 25

FailOver Configuration ALTIBASE 가제공하는 FailOver 기능을이용하여 TOMCAT 과연동하는방법에대해기술한다. FailOver Configuration TOMCAT 은 FailOver 기능을제공하지않는다. 하지만 ALTIBASE 5.3.3 버전부터 FailOver 기능을제공하기때문에, ALTIBASE 의 FailOver 기능을이용하면 FailOver 가구현가능하다. 사용방법은다음과같다. 1. server.xml 파일에 JNDI DataSource 를지정할때 Connection url 부분에 FailOver 관련속성을지정해준다. < GlobalNamingResources> <Resource name="jdbc/altibase" auth="container" type="javax.sql.datasource" driverclassname="altibase.jdbc.driver.altibasedriver" maxactive="100" maxidle="-1" maxwait="-1" username="sys" password="manager" url="jdbc:altibase://192.168.6.224:21129/mydb? AlternateServers=(192.168.1.35:21129)& ConnectionRetryCount=3& ConnectionRetryDelay=3& SessionFailOver=on& LoadBalance=off" validationquery="select 1 FROM DUAL" testonborrow="true" removeabandoned="true" removeabandonedtimeout="60" logabandoned="true" /> </GlobalNamingResources> * FailOver/server.xml 파일참조 FailOver 관련속성은다음과같다. AlternateServer ConnectionRetryCount ConnectionRetryDelay LoadBalance 장애발생시접속하게될가용서버를나타내며 (IP Address1:Port1, IP Address2:Port2,...) 형식으로기술한다. 가용서버접속실패시, 접속시도반복횟수 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) on 으로설정하면최초접속시도시에기본서버와가용 ALTIBASE & TOMCAT 연동가이드 18 page of 25

서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternateServer 로기술한서버에접속한다. SessionFailOver STF(Service Time Fail-Over) 를할것인지여부를나타낸다. on : STF, off : CTF CTF(Connection Time Fail-Over) 는 DBMS 접속시점에장애를인식하여장애가발생한 DBMS 대신다른가용노드의 DBMS 로접속하고서비스를진행한다. STF(Service Time Fail-Over) 는 DBMS 접속에성공하여서비스하는도중에장애가발생하는것으로, 다른가용노드의 DBMS 에다시접속하여세션의프로퍼티를복구한후사용자응용프로그램의업무로직을다시수행하도록하는것을의미한다. 즉장애가발생한 DBMS 에서수행된작업을다시한번수행할필요가있는경우이다. CTF 및 STF 의구현방법은 ALTIBASE FailOver 기술문서를참조한다. ALTIBASE & TOMCAT 연동가이드 19 page of 25

TOMCAT 연동시주의사항 TOMCAT 연동시주의사항에대해설명한다. Tomcat 사용시 JDK 환경 DBCP 를이용하여 preparestatement 를처리할때고려해야할사항이있는데성능향상을위해 Tomcat 설정중 testonborrow ( default : true), poolpreparestatements ( default : false) 설정을변경사용할경우되도록 JDK( JRE ) 1.6 이상의환경에서사용하길권장한다. 문제의증상 Tomcat log (version 6) --- Check the statement (query failed). --- Cause: java.sql.sqlexception: [0]:Failure to find statement; nested exception is com.ibatis.common.jdbc.exception.nestedsqlexception: --- The error occurred in maps/commonsqlmap.xml. --- The error occurred while applying a parameter map. --- Check the Common.getIservSp-InlineParameterMap. --- Check the statement (query failed). --- Cause: java.sql.sqlexception: [0]:Failure to find statement 정상적인경우 Tomcat log (version 6) [0001][14:14:31 386][ 2][ 0] GET- CONNECTION[org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection] [1 ms] 확인방법 $CATALINA_HOME/conf/server.xml 파일내용중아래부분의주석을제거하신후 Tomcat 을재시작하여 $CATALINA_HOME/logs/tomcat.log 를확인합니다. 변경전 > <!-- <Valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolvehosts="false"/> --> 변경후 > <Valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%a %b %t %s %D %r " resolvehosts="false"/> 참고 : http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html ALTIBASE & TOMCAT 연동가이드 20 page of 25

권장 Tomcat 설정값 환경 1 환경 2 환경 3 JDK Ver 1.5 1.6 1.6 Tomcat Ver 6 (dbcp ver 1.3) 6 (dbcp ver 1.3) 7 (dbcp ver 1.4) testonborrow TRUE 만권장 (Defalut) True/False True/False poolpreparestat ements FALSE 만권장 (Defalut) True/False True/False Result testonborrow=false, poolpreparestatement=true 사용시권장하지않음, 권장 권장 JRE 또는 JDK1.6 으로업그레이드권장 * testonborrow 사용한 Resource 의반납 + connection pool 에서 connection 을가져올때해당 connection 이유효성검사여부 + 기본값은 false 이며, 일반적으로기본값을사용한다. true 설정하게되면매번 validationquery 를수행하기때문에약간의성능저하를감수해야한다. * poolpreparestatement + DBCP 에서 Statement 풀링이커넥션별로유지되고있기때문에, 응용서버 (App) 에서는질의를컴파일한정보를계속유지하게된다. 이후같은질의에대해서는 prepare 과정없이 execute 단계만반복함으로써성능향상을가져올수있다. 프로그램에서할당한 Connection, Statement, ResultSet 는사용이끝나면반드시명시적으로 close 해줘야한다. 만약 close 해주지않으면위의 Resource 를선언한변수의 life cycle 동안계속 Resource 를할당하고있기때문에불필요한 Resource 소모를가져오게된다. Connection 을 close 해주지않으면 pool 로 Connection 이반납되지않기때문에다른곳에서 Connection 을사용하지못할것이다. Statement 는 session 이유지되는동안어플리케이션뿐만아니라, DB 서버상에도 Statement 정보가메모리에할당되어남아있게된다. 따라서 Statement 를 close 해주지않고 Connection 도 close 해주지않는다면, 어플리케이션에서불필요한 Resource 가계속할당되는것도문제지만, DB 서버의 Query_Prepare 메모리영역도증가하게된다. 만약위의 Resource 들을명시적으로 close 해주지않았다면, 해당 Resource 를선언한변수의 life cycle 동안메모리에할당되어있다가 life cycle 이끝나면해당 Resource 를더이상참조하지않게되므로, JVM(Java Virtual Machine) 의 GC(Garbage Collector) 가후에해당 Resouce 들을해제하게될것이다. 하지만일반적으로 GC 는우선순위가가장낮은쓰레드이다. 따라서 GC 가 Resource 를해제하는시점이언제인지는예측하기가어렵다. 즉, 어플리케이션에서변수의 life cycle 이끝나서더이상참조되지않기때문에바로해제될수있는것이아니고, GC 가해제하지않는이상 DB 서버에서는계속해당 Resource 에대한정보를가지고있게된다. 따라서, 반드시사용이끝난 Resource 는명시적으로 close 해주는것을권장한다. ALTIBASE & TOMCAT 연동가이드 21 page of 25

버려진 Connection 을제거 DBCP 를이용하여 connection 을처리할때문제점이하나있는데바로웹어플리케이션에서명시적으로 ResultSet, Statement, Connection 을 close 해줘야한다는것이다. 만약웹어플리케이션에서이러한 resource 를 close 하는것을실패했다면이후에 resource 들을재사용할수없게된다. 이러한현상을 Connection pool leak 이라고부르며, connection pool leak 이지속된다면최종에는이용가능한 connection 이모두없어지게될것이다. 이러한문제를막기위해 DBCP 에서문제가발생하여버려진 connection 을복구하고로깅하는방법을제공하는데다음의속성을설정하면된다. removeabandoned="true" ALTIBASE & TOMCAT 연동가이드 22 page of 25

TOMCAT 연동시오류사항 TOMCAT 에서 ALTIBASE 연동시자주발생되는오류사항에대한내용을설명한다. No suitable driver java.sql.sqlexception: No suitable driver 오류는접속 URL 정보중 Altibase 에해당하는부분을잘못기입했을때발생한다. url="jdbc:mysql://127.0.0.1:20300/mydb" jdbc:altibase 부분이 jdbc:mysql 부분으로잘못설정되어있기때문에에러가발생한다. Communication link failure java.sql.sqlexception: Communication link failure 오류는다음과같은상황에서발생한다. 1. ALTIBASE DB server 가구동중이지않는상황 2. ALTIBASE JDBC driver 파일이 ALTIBASE DB server 의버전과상이한경우 예 ) ALTIBASE DB Server 의버전은 5.3.1 버전인데, 5.1.1 버전의 ALTIBASE JDBC driver 파일을사용하는경우 3. 접속 URL 정보가잘못설정된경우 3-1. IP 가잘못설정된경우 3-2. PORT_NO 가잘못설정된경우 예 ) ALTIBASE DB Server 의 IP 주소가 10.10.10.10 이고 PORT_NO 가 20300 인데 IP 주소를 10.10.10.1 로설정하고나 PORT_NO 를 20301 로설정한경우 url="jdbc:altibase://10.10.10.1:20301/mydb" 그외확인사항 간혹웹어플리케이션의 context.xml 파일에 DataSource 를지정했을때 Connection url 부분이정확함에도불구하고 Client unable to establish connection 에러혹은, driver 클래스가 null 이라는에러를접할수도있다. 이때는 $CATALINA_HOME/conf/catalina 디렉토리안의웹어플리케이션이름.xml 파일을지우도록한다. 간혹웹어플리케이션의 context.xml 파일이변경되었는데도해당파일이 reloading 이안되어에러가발생하는경우가있다. ALTIBASE & TOMCAT 연동가이드 23 page of 25

첨부예제파일 첨부된예제파일에대해설명한다. 첨부예제 1. AltibaseConnectionPool ABConnectionPoolDataSource 을이용하여 ALTIBASE 가제공하는 ConnectionPool 을이용하는예제이다. 2. FailOver ALTIBASE 5.3.3 버전의 FailOver 를이용하는예제이다. 3. GlobalNamingResources GlobalNaming JNDI DataSource 를이용하는예제이다. 4. WebApplicationContext 특정웹어플리케이션에서 DataSource 를이용하는예제이다. ALTIBASE & TOMCAT 연동가이드 24 page of 25

알티베이스 서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 1008 호 02-2082-1000 http://www.altibase.com 대전사무소대전광역시서구둔산동 921 주은리더스텔 901 호 042-489-0330 기술지원본부서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 908 호 02-2082-1000 기술지원센터 02-2082-1114 http://support.altibase.com Copyright c 2000~2013 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된 ALTIBASE 제품의특징이나기능의개발, 발표등의시기는 ALTIBASE 재량입니다. ALTIBASE 는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. ALTIBASE & TOMCAT 연동가이드 25 page of 25