ALTIBASE 사용자가이드 Templete

Similar documents
ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

단계

chapter1,2.doc

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

10.ppt

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

ALTIBASE 사용자가이드 Templete

untitled

Tibero

FileMaker 15 ODBC 및 JDBC 설명서

.

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

ALTIBASE WebLogic 연동 가이드

Microsoft PowerPoint - 18-DataSource.ppt

슬라이드 1

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

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

J2EE Concepts

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

Mango220 Android How to compile and Transfer image to Target

FileMaker ODBC 및 JDBC 가이드

쉽게 풀어쓴 C 프로그래밊

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

ALTIBASE WebLogic 연동 가이드

Analyze Connection Failover Options.ppt

JDBC 소개및설치 Database Laboratory

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

ALTIBASE 사용자가이드 Templete

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

untitled

FileMaker ODBC and JDBC Guide

untitled

歯JavaExceptionHandling.PDF

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

PowerPoint 프레젠테이션

11_oh.hwp

Interstage5 SOAP서비스 설정 가이드

ALTIBASE 사용자가이드 Templete

Chapter 1

1

ALTIBASE 사용자가이드 Templete

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

단계

Interstage4 설치가이드

02 C h a p t e r Java

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

Windows 8에서 BioStar 1 설치하기

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

Data Provisioning Services for mobile clients

1217 WebTrafMon II

untitled

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

untitled

ALTIBASE 사용자가이드 Templete

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

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

Cloud Friendly System Architecture

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

교육2 ? 그림

C++ Programming

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

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

Spring Boot/JDBC JdbcTemplate/CRUD 예제

untitled

JMF2_심빈구.PDF

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

PowerPoint 프레젠테이션

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

Remote UI Guide

uFOCS

ALTIBASE HDB Patch Notes

untitled

PowerPoint 프레젠테이션

FileMaker ODBC and JDBC Guide

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

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

게시판 스팸 실시간 차단 시스템

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

DBMS & SQL Server Installation Database Laboratory

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

rmi_박준용_final.PDF

Install stm32cubemx and st-link utility

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Windows 10 General Announcement v1.0-KO

공개 SW 기술지원센터

PowerPoint 프레젠테이션

LXR 설치 및 사용법.doc

슬라이드 1

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

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR


Microsoft PowerPoint - 10Àå.ppt

JUNIT 실습및발표

PowerPoint 프레젠테이션

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

서현수

Transcription:

Real Alternative DBMS ALTIBASE, Since 1999 ALTIBASE & TOMCAT 연동가이드 ALTIBASE 6 2014. 10 Copyright c 2000~2014 ALTIBASE Corporation. All Rights Reserved.

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

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

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

TOMCAT 설치 TOMCAT 설치방법에대해간단히살펴보도록한다. TOMCAT 7 제품을설치한다. TOMCAT을설치하기전에반드시 JDK(Java Development Kit) 또는 JRE(Java Runtime Environment) 가설치되어있어야한다. TOMCAT 다운로드 http://tomcat.apache.org/download-70.cgi 사이트에방문하여최근 release 된 TOMCAT 바이너리파일을다운받는다.( apache-tomcat-7.0.56.tar.gz) TOMCAT 설치 다운로드한압축파일을 FTP로옮긴다.(tomcat 설치계정 ) 업로드한압축파일을적절한디렉토리에푼다.(tar xvzf apache-tomcat-7.0.56.tar.gz) Binary이기때문에압축을푸는것으로설치는끝이난다. [tomcat@dev ~]$ tar xvzf apache-tomcat-7.0.56.tar.gz apache-tomcat-7.0.56/bin/catalina.sh apache-tomcat-7.0.56/bin/configtest.sh apache-tomcat-7.0.56/bin/daemon.sh apache-tomcat-7.0.56/bin/digest.sh apache-tomcat-7.0.56/bin/setclasspath.sh ALTIBASE & TOMCAT 연동가이드 5 page of 21

apache-tomcat-7.0.56/bin/shutdown.sh apache-tomcat-7.0.56/bin/startup.sh apache-tomcat-7.0.56/bin/tool-wrapper.sh apache-tomcat-7.0.56/bin/version.sh apache-tomcat-7.0.56/conf/... apache-tomcat-7.0.56/webapps/manager/images/tomcat.gif apache-tomcat-7.0.56/webapps/manager/images/update.gif apache-tomcat-7.0.56/webapps/manager/images/void.gif apache-tomcat-7.0.56/webapps/manager/index.jsp apache-tomcat-7.0.56/webapps/manager/status.xsd apache-tomcat-7.0.56/webapps/manager/xform.xsl [tomcat@dev ~]$ mv apache-tomcat-7.0.56 /app/was/tomcat7 <tomcat 설치예 > 환경변수설정 다음의환경변수를설정한다. 1. CATALINA_HOME : TOMCAT 을설치한디렉토리를지정한다. 2. JAVA_HOME 혹은 JRE_HOME : JDK 혹은 JRE 가설치된디렉토리를지정한다. 3. PATH : $CATALINA_HOME/bin 디렉토리 (1 번에설정한 TOMCAT 설치디렉토리하위의 bin 디렉토리의경로 ) 를 PATH 에추가한다. [tomcat@dev ~]$ vi.bash_profile export CATALINA_HOME=/app/was/tomcat7 export JAVA_HOME=/app/java/jdk1.6 export PATH=$CATALINA_HOME/bin:$JAVA_HOME/bin:$PATH [tomcat@dev ~]$..bash_profile <linux 환경설정예 > TOMCAT 구동 다음의명령어를수행하여 TOMCAT 을구동시킨다. $ catalina.sh start (windows : catalina start) [tomcat@dev ~]$ catalina.sh start ALTIBASE & TOMCAT 연동가이드 6 page of 21

Using CATALINA_BASE: Using CATALINA_HOME: /app/was/tomcat7 /app/was/tomcat7 Using CATALINA_TMPDIR: /app/was/tomcat7/temp Using JRE_HOME: /app/java/jdk1.6 Using CLASSPATH: /app/was/tomcat7/bin/bootstrap.jar:/app/was/tomcat7/bin/tomcat-juli.jar Tomcat started. [tomcat@dev ~]$ TOMCAT 종료 다음의명령어를수행하여 TOMCAT 을종료시킨다. $ catalina.sh stop (windows : catalina stop) [tomcat@dev ~]$ catalina.sh stop Using CATALINA_BASE: Using CATALINA_HOME: /app/was/tomcat7 /app/was/tomcat7 Using CATALINA_TMPDIR: /app/was/tomcat7/temp Using JRE_HOME: /app/java/jdk1.6 Using CLASSPATH: /app/was/tomcat7/bin/bootstrap.jar:/app/was/tomcat7/bin/tomcat-juli.jar [tomcat@dev ~]$ ALTIBASE & TOMCAT 연동가이드 7 page of 21

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 버전을확인하는방법은다음의명령어를수행하면된다. [altibase@dev lib]$ java -jar Altibase.jar JDBC Driver Info : Altibase Ver = 6.3.1.2.1 for JavaVM v1.4, CMP:7.1.1, Aug 18 2014 15:36:32 연동하려는 ALTIBASE DB Server와 ALTIBASE JDBC Driver가호환가능한지확인을위해 ALTIBASE DB Server 버전확인이필요한다. 이때, ALTIBASE DB Server의 cm protocol version과 ALTIBASE JDBC Driver의 CMP가동일하면호환가능하다. [altibase@dev lib]$ altibase -v version 6.3.1.2.1 X86_64_LINUX_redhat_Enterprise_ES4-64bit-6.3.1.2.1-release-GCC3.4.6 (x86_64-unknown-linux-gnu) Aug 18 2014 15:45:00, binary db version 6.2.1, meta version 6.3.1, cm protocol version 7.1.1, replication protocol version 7.4.1 버전이 UP 되면서 JDBC 관련버그가 fix 되었을가능성이있으므로, 일반적으로 ALTIBASE DB Server 의버전과 ALTIBASE JDBC driver 버전을동일하게맞추거나최신의 ALTIBASE JDBC driver 파일을사용하는것을권장한다. ALTIBASE & TOMCAT 연동가이드 8 page of 21

JDBC driver 파일을 TOMCAT 에위치 TOMCAT 에서 ALTIBASE 와연동하기위해 ALTIBASE JDBC driver(altibase.jar) 를적절한곳에위치시켜 TOMCAT 에서자동으로인식할수있도록해야하는데다음중한가지방법으로설정하면된다. 1. Altibase.jar 를 CLASSPATH 에추가 [tomcat@dev ~]$ cd $CATALINA_HOME/bin [tomcat@dev bin]$ vi catalina.sh CLASSPATH=/app/db/ALTIBASE/lib/Altibase.jar [tomcat@dev bin]$ catalina.sh stop Using CATALINA_BASE: Using CATALINA_HOME: /app/was/tomcat7 /app/was/tomcat7 Using CATALINA_TMPDIR: /app/was/tomcat7/temp Using JRE_HOME: Using CLASSPATH: /app/java/jdk1.6 /app/db/altibase/lib/altibase.jar: [tomcat@dev bin]$ catalina.sh start Using CATALINA_BASE: Using CATALINA_HOME: /app/was/tomcat7 /app/was/tomcat7 Using CATALINA_TMPDIR: /app/was/tomcat7/temp Using JRE_HOME: Using CLASSPATH: /app/java/jdk1.6 /app/db/altibase/lib/altibase.jar: /app/was/tomcat7/bin/bootstrap.jar:/app/was/tomcat7/bin/tomcatjuli.jar /app/was/tomcat7/bin/bootstrap.jar:/app/was/tomcat7/bin/tomcatjuli.jar Tomcat started. 2. Altibase.jar를 $CATALINA_HOME/ lib 디렉토리안에위치 [tomcat@dev ~]$cd $CATALINA_HOME/lib [tomcat@dev lib]$ cp /app/db/altibase/lib/altibase.jar./ [tomcat@dev lib]$ ALTIBASE & TOMCAT 연동가이드 9 page of 21

ALTIBASE 와 TOMCAT 의연동 ALTIBASE 와 TOMCAT 을연동하는방법에대해기술한다. 연동하는방법으로는 DBCP 를이용하여연동, 일반 JDBC 를이용하여연동, ATLIBASE 의 ConnectionPool 을이용하여연동하는방법이있다. JNDI DataSource 연동 JNDI DataSource 를구성하는방법은 $CATALINA_HOME/conf/context.xml 에아래내용을기술한다. $CATALINA_HOME/conf/context.xml < context> <Resource name="jdbc/altibase" auth="container" type="javax.sql.datasource" driverclassname="altibase.jdbc.driver.altibasedriver" url="jdbc:altibase://127.0.0.1:20300/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> 웹어플리케이션홈 /WEB-INF/web.xml 에아래내용을추가하면웹에서사용가능하다. 웹어플리케이션홈 /WEB-INF/web.xml <resource-ref> <description>db Connection</description> <res-ref-name>jdbc/altibase</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> </resource-ref> <Resouce> 태그에정의하는속성은다음과같다. ALTIBASE & TOMCAT 연동가이드 10 page of 21

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 프로그램에서다음과같이 JNDI Datasource 를통해 Connection 을얻는다. 이때, java:/comp/env 는 JNDI 를 lookup 할때사용하는 prefix 이다. Context envcontext = (Context)new InitialContext().lookup("java:/comp/env"); ALTIBASE & TOMCAT 연동가이드 11 page of 21

DataSource ds = (DataSource)envContext.lookup("jdbc/Altibase"); Connection conn = ds.getconnection(); 또는 Context initctx = new InitialContext(); 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(); %> 일반 JDBC 방법으로연동 1. JDBC driver 로딩한다. 2. Connection 객체얻는다. 3. Statement를객체를얻는다. 4. SQL문을실행한후 ResultSet에담는다. 5. 작업이완료된후관련된모든객체를 close한다. 다음은일반 JDBC 를이용하여 ALTIBASE 와연동하는 jsp 예제프로그램이다. ALTIBASE & TOMCAT 연동가이드 12 page of 21

<%@page import="java.sql.resultset"%> <%@page import="java.sql.statement"%> <%@page import="java.sql.drivermanager"%> <%@page import="java.sql.connection"%> <%@page import="java.util.properties"%> <% Class.forName("Altibase.jdbc.driver.AltibaseDriver"); Properties prop = new Properties(); prop.put("user", "sys"); prop.put("password", "manager"); String url = "jdbc:altibase://192.168.56.110:20300/mydb"; String sql = "SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL"; Connection conn = null; Statement stmt= null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, prop); stmt = conn.createstatement(); rs = stmt.executequery(sql); while(rs.next()) { out.println(rs.getstring(1)); } }catch(exception se) { out.println(se.getmessage()); } finally { rs.close(); stmt.close(); conn.close(); } %> ALTIBASE & TOMCAT 연동가이드 13 page of 21

FailOver Configuration ALTIBASE 가제공하는 FailOver 기능을이용하여 TOMCAT 과연동하는방법에대해기술한다. FailOver Configuration TOMCAT 은 FailOver 기능을제공하지않는다. 하지만 ALTIBASE 5.3.3 버전부터 FailOver 기능을제공하기때문에, ALTIBASE 의 FailOver 기능을이용하면 FailOver 가구현가능하다. 사용방법은다음과같다. 1. context.xml 파일에 JNDI DataSource 를지정할때 Connection url 부분에 FailOver 관련속성을지정해준다. <context> <Resource name="jdbc/altibase" auth="container" type="javax.sql.datasource" </context> 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" /> * FailOver/server.xml 파일참조 FailOver 관련속성은다음과같다. 자세한설정은 Replication Manual 를참조하면된다. AlternateServer ConnectionRetryCount ConnectionRetryDelay 장애발생시접속하게될가용서버를나타내며 (IP Address1:Port1, IP Address2:Port2,...) 형식으로기술한다. 가용서버접속실패시, 접속시도반복횟수 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) ALTIBASE & TOMCAT 연동가이드 14 page of 21

LoadBalance SessionFailOver on 으로설정하면최초접속시도시에기본서버와가용서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternateServer 로기술한서버에접속한다. 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 연동가이드 15 page of 21

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 연동가이드 16 page of 21

권장 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 연동가이드 17 page of 21

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

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 연동가이드 19 page of 21

첨부예제파일 첨부된예제파일에대해설명한다. 첨부예제 1. GlobalNamingResources GlobalNaming JNDI DataSource를이용하는예제이다. 2. WebApplicationContext 특정웹어플리케이션에서 DataSource를이용하는예제이다. ALTIBASE & TOMCAT 연동가이드 20 page of 21

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