Real Alternative DBMS ALTIBASE, Since 1999 ALTIBASE & WebLogic 연동가이드 2010. 12 Copyright c 2000~2010 ALTIBASE Corporation. All Rights Reserved.
Document Control Change Record Date Author Change Reference 2010-12-13 durusari Created Reviews Date Name (Position) 2010-12-31 ma114(ts), balance(ts), snkim(sp) Distribution Name Location ALTIBASE & WebLogic 연동가이드 2 page of 30
목차 개요... 4 WEBLOGIC 용어설명... 5 도메인... 5 WebLogic 서버인스턴스 ( 관리서버, 관리된서버 )... 5 JDBC 데이터소스... 6 커넥션풀 (pool)... 6 배치, 배포... 6 시작하기전에... 7 WebLogic 버전... 7 JDBC 스펙 (spec)... 7 WEBLOGIC SETUP... 8 다운로드... 8 설치... 8 도메인생성... 10 WEBLOGIC 서버인스턴스의구동과종료... 12 구동... 12 종료... 12 JDBC 드라이버설정... 13 ALTIBASE JDBC 드라이버를얻는방법... 13 ALTIBASE JDBC 드라이버버전을확인하는방법... 13 WebLogic 에서사용할 JDBC 드라이버를설정하는방법... 13 ALTIBASE 와 WEBLOGIC 연동... 15 JDBC 데이터소스생성... 15 웹응용프로그램생성및배치... 20 연동예제... 21 FAIL-OVER & LOAD-BALANCING 설정... 25 WebLogic 에서의설정... 25 ALTIBASE 에서의설정... 25 연동오류... 28 Cannot load driver... 28 Can not make a database connection to the given URL / Invalid Altibase URL (No suitable driver)... 28 Could not create pool connection... 28 Client unable to establish connection / Communication link failure... 28 Hang 현상... 29 ALTIBASE & WebLogic 연동가이드 3 page of 30
개요 본문서는 ALTIBASE 와 WebLogic 을연동하기위한가이드문서로서 WebLogic 설치부터시작하여 ALTIBASE 와연동을하는간략한웹응용프로그램실행까지다루고있습니다. 본문서는 Windows 플랫폼의 WebLogic 10.3.3.0 을기준으로작성되었으며모든내용은버전에따라상이할수있으므로 WebLogic 설치및도메인생성과같은기본환경구축은 BEA Systems 또는 Oracle 의문서, WebLogic 설치시제공되는관리콘솔 (Administration Console) 도움말을참조하시기바랍니다. Oracle Documentation Library 본문서와관련된오류및개선사항은 ALTIBASE 기술본부대표메일인 support@altibase.com 으로보내주시기바랍니다. ALTIBASE & WebLogic 연동가이드 4 page of 30
WebLogic 용어설명 ALTIBASE 와 WebLogic 의연동에앞서기본적으로알아야할 WebLogic 과관련용어에대해간략하게설명한다. 도메인 도메인이란 WebLogic 서버인스턴스 (instance) 에대한논리적인그룹으로하나의도메인은하나이상의 WebLogic 서버인스턴스로구성된다. 사용자는하나의 WebLogic (WebLogic Server/WLS) 을설치하여여러개의도메인을구성하거나여러개의 WebLogic 을설치하여하나의도메인으로구성할수있다. WebLogic 서버인스턴스 ( 관리서버, 관리된서버 ) WebLogic 서버인스턴스란웹응용프로그램 (Web Application), 웹서비스 (Web Services), EJB 등을배치 (deploy) 할수있는하나의프로세스 (process) 로서 관리서버, 관리된서버 로구분한다. 관리서버 (Administration Server) 도메인전체를관리할수있도록관리콘솔 (Administration Console) 이함께배치된 WebLogic 서버인스턴스로도메인생성시함께생성된다. 관리된서버 (Managed Server) 관리서버를제외한모든 WebLogic 서버인스턴스로별도로추가하거나인스턴스간클러스트링 (clustering) 이가능하다. 즉, 하나의도메인은 1 개의관리서버와 0 개이상의관리된서버로구성된다. ALTIBASE & WebLogic 연동가이드 5 page of 30
JDBC 데이터소스 JDBC 데이터소스란 WebLogic 서버인스턴스가 RDBMS 에접속하기위한자바객체이다. 연동할 RDBMS 에대한 JDBC 데이터소스를생성후해당 JDBC 데이터소스를사용할 WebLogic 서버인스턴스를지정하면해당 WebLogic 서버인스턴스에배치된웹응용프로그램은소스코드에 JDBC 데이터소스의 JNDI (Java Naming and Directory Interface) 이름을명시하여대상 RDBMS 와연동을할수있다. JBDC 데이터소스를생성하기위해서는관련 JDBC 드라이버가 WebLogic 에서사용할수있도록사전에설정되어있어야만한다. 커넥션풀 (pool) JDBC 데이터소스생성시자동으로생성되는접속대상 RDBMS 와의접속집합으로 초기용량, 최대용량 과같은다양한속성에의해조절된다. 커넥션풀, 접속풀은동의어로본문서에서는 커넥션풀 로통일한다. 배치, 배포 배치, 배포는모두 deploy 를의미하는동의어로본문서에서는 배치 로통일한다. ALTIBASE & WebLogic 연동가이드 6 page of 30
시작하기전에 WebLogic 버전 기본적으로최신버전을권장하며최소 WebLogic 8.1.6.0 이상을권장한다. 이보다하위버전에서서로다른버전의 ALTIBASE 를동시에연동하면 JDBC 드라이버연동이정상적으로되지않아 WebLogic 서버인스턴스의구동이실패하거나행 (hang) 과같은현상이발생할수있다. JDBC 스펙 (spec) ALTIBASE 5 JDBC 드라이버는 JDBC 스펙 3.0 (JRE 1.4 또는 1.5) 을기준으로 JDK 1.4 에서제작 (build) 되었으며스펙미지원의경우는 Not Supported 또는에러를반환한다. 따라서, JDBC 스펙 4.0(JRE 1.6 이상 ) 을기준으로작성된응용프로그램은스펙미지원으로인한문제가발생할수있으므로개발단계에서부터 JDBC 스펙 3.0 을준수하도록해야한다. 또한, JDBC 스펙 3.0 이라할지라도일부지원하지않는스펙이존재하므로사전에 API 매뉴얼 을참조하여미지원스펙을확인하도록한다. 스펙미지원으로인하여발생하는문제에대해 ALTIBASE 는보장하지않는다. ALTIBASE & WebLogic 연동가이드 7 page of 30
WebLogic Setup WebLogic 을다운로드및설치후하나의도메인을생성하는간략한절차를 Windows 플랫폼의 WebLogic 10.3.3.0 을예로하여설명한다. 다운로드 2008 년 4 월 WebLogic 을개발한 BEA Systems 가 Oracle 로인수되면서버전 9 이상부터는 Oracle 미들웨어제품다운로드페이지에서다운로드할수있다. http://www.oracle.com/technetwork/middleware/downloads/index.html 해당웹페이지에서라이선스동의후운영체제플랫폼에맞는가장최근에릴리즈 (release) 된 WebLogic 을다운로드받도록한다. 설치 다운로드받은파일을실행하면 WebLogic 자동인스톨러 (installer) 가수행된다. 아래와같은절차로 WebLogic 을설치한다. 1. 시작화면에서다음을선택후 WebLogic 및관련미들웨어제품이설치될경로를지정한다. ALTIBASE & WebLogic 연동가이드 8 page of 30
2. 설치유형을선택후 WebLogic 및관련미들웨어제품이설치될경로를지정한다. ( 여기서지정한 WebLogic 의설치경로는추후환경변수 WL_HOME 으로식별된다.) 3. 시작메뉴폴더위치를지정후설치를시작한다. 4. 설치가모두완료되면이어서수행할도메인생성을위해 Quickstart 실행 옵션이체크된상태에서완료 (Done) 를선택한다. ALTIBASE & WebLogic 연동가이드 9 page of 30
도메인생성 설치마법사 (Configuration Wizard) 를사용하여도메인을생성할수있다. 설치마법사실행은해당파일 ($WL_HOME/common/bin/config.exe) 을직접실행하거나시작메뉴의 WebLogic 메뉴그룹에서바로가기를실행하면된다. 아래와같은절차로 WebLogic 을설치한다. 1. 설치마법사를실행한다. 이전에 Quickstart 를수행했다면 Getting started with WebLogic Sever 를선택한다. 2. 새 WebLogic 도메인만들기를선택후필요한경우추가적인도메인소스를선택한다. 3. 새로이생성할도메인의이름과위치 ( 설치경로 ) 를지정후관리서버의사용자이름및비밀번호를입력한다. ( 여기서지정한도메인의설치경로는추후환경변수 DOMAIN_HOME 으로식별된다.) ALTIBASE & WebLogic 연동가이드 10 page of 30
4. 도메인관리서버의시작모드와 JDK 설정을한다. 시작모드테스트가목적이므로 개발모드 로선택한다. 개발모드는 $DOMAIN_HOME/autodeploy 를통하여웹응용프로그램을자동으로배치및변경할수있어손쉬운테스트가가능하다. JDK 시작모드를선택하면그에적절한 JDK 가자동적으로선택되므로특별한경우가아니라면별도로선택하지않아도된다. 5. 관리서버의수신포트와같은특별히변경을원하는사항이있다면관련항목을선택후변경하도록한다. 없다면생략 (NEXT) 한다. 참고로관리서버는기본적으로 7001 포트를사용한다. 6. 도메인생성이모두완료되면 관리서버시작 옵션을체크한상태에서완료 (Done) 를선택한다. ALTIBASE & WebLogic 연동가이드 11 page of 30
WebLogic 서버인스턴스의구동과종료 WebLogic 서버인스턴스를구동하고종료하는여러가지방법중 $DOMAIN_HOME/bin 에존재하는스크립트 (script or batch) 파일실행을통한구동과종료에대해설명한다. 스크립트파일은도메인별로관리서버와관리된서버각각에대한구동 / 종료스크립트파일이별도로존재하는데여기서는관리서버의구동과종료에대해서만설명한다. 관리서버 - startweblogic.cmd / stopweblogic.cmd 관리된서버 - startmanagedweblogic.cmd / stopmanagedweblogic.cmd 구동 startweblogic.cmd 를실행하여해당도메인의관리서버를구동한다. 아래는정상적으로구동이완료되었을때의메시지형태예제이다. $ startweblogic.cmd.. JAVA Memory arguments: -Xms256m -Xmx512m -XX:CompileThreshold=8000 - XX:PermSize=48m -XX:MaxPermSize=128m. WLS Start Mode=Development... 중략... <2010. 12. 7 오후 7 시 14 분 27 초 KST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING> <2010. 12. 7 오후 7 시 14 분 27 초 KST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode> 종료 stopweblogic.cmd 를실행하여해당도메인의관리서버를종료한다. 아래는정상적으로종료가완료되었을때의메시지형태예제이다. $ stopweblogic.cmd Stopping Weblogic Server... Initializing WebLogic Scripting Tool (WLST)... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Connecting to t3://ibm-1da5af93847:7001 with userid weblogic... Successfully connected to Admin Server 'AdminServer' that belongs to domain 'mydomain'.... 중략... Shutting down the server AdminServer with force=false while connected to AdminServer... Disconnected from weblogic server: AdminServer Exiting WebLogic Scripting Tool. Done Stopping Derby Server... 종료의경우, 종료스크립트파일실행결과만으로정상종료를보장할수없다. 메시지상으로정상적인종료를수행하였음에도불구하고관련프로세스가여전히존재할시는 WebLogic 서버인스턴스의로그를확인하여조치하여야한다. ALTIBASE & WebLogic 연동가이드 12 page of 30
JDBC 드라이버설정 JDBC 데이터소스생성을하기위해서는관련 JDBC 드라이버를 WebLogic 에설정하여야한다. JDBC 드라이버설정에대한전반적인사항을설명한다. ALTIBASE JDBC 드라이버를얻는방법 ALTIBASE JDBC 드라이버는 Altibase.jar 라는하나의파일로제공된다. 기본적으로 ALTIBASE 서버패키지와함께제공되므로 ALTIBASE 가설치된운영체제계정의 $ALTIBASE_HOME/lib 디렉토리안에서얻을수있다. ALTIBASE 5 버전부터는 Altibase.jar 는물론 Altibase5.jar 라는파일도존재하는데, Altibase5.jar 는 ALTIBASE 5 버전과그이하의버전을함께연동할때사용한다. 따라서, 하나의 ALTIBASE 서버와만연동하거나동일한버전의여러 ALTIBASE 서버를연동하는일반적인상황에서는 $ALTIBASE_HOME/lib/Altibase.jar 파일을사용하면된다. 최신 ALTIBASE JDBC 드라이버는 ATC(http://atc.altibase.com) 를통하여얻을수있다. ALTIBASE JDBC 드라이버버전을확인하는방법 연동하려는 ALTIBASE 서버와 ALTIBASE JDBC 드라이버가호환가능한지판단을위해 ALTIBASE 서버와 ALTIBASE JDBC 드라이버의버전을비교하여 CM(Communication) 프로토콜이일치하는지반드시확인하여야한다. ALTIBASE 서버의버전을확인하는방법은아래와같다. $ altibase v version 5.3.1.7 IBM_AIX_5.3-64bit-5.3.1.7-release-xlC_r (powerpc-ibmaix5.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 ALTIBASE JDBC 드라이버의버전을확인하는방법은아래와같다. $ 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 서버의 cm protocol version 과 ALTIBASE JDBC 드라이버의 CMP 가일치하면호환이가능하다. 일반적으로호환성을위해 ALTIBASE 서버패키지에포함된 ALTIBASE JDBC 드라이버파일을사용하나가급적이면호환가능한최신의 ALTIBASE JDBC 드라이버파일을사용하는것을권장한다. WebLogic 에서사용할 JDBC 드라이버를설정하는방법 WebLogic 에서특정 JDBC 드라이버를사용하려면관련파일을해당도메인관리서버의 CLASSPATH 에추가해야한다. ALTIBASE & WebLogic 연동가이드 13 page of 30
크게두가지방법으로설정이가능하며둘중어느방법을선택하여도무관하나설정후에는반드시해당도메인의관리서버를재구동해야한다. 참고로모든예제들은 ALTIBASE 5 와버전이다른 ALTIBASE 를동시에연동하기위한설정으로동일버전의 ALTIBASE 간의연동시에는하나의 JDBC 드라이버만설정하면된다. 1. $DOMAIN_HOME/lib 에 JDBC 드라이버관련파일을위치. 각도메인의기본라이브러리경로인 $DOMAIN_HOME/lib 에 JDBC 드라이버관련파일을위치후해당도메인의관리서버구동하면아래와같은메시지와함께해당파일이자동으로 CLASSPATH 에추가된다.... <2010. 12. 14 오후 4 시 48 분 24 초 KST> <Notice> <WebLogicServer> <BEA-000395> <Following extensions directory contents added to the end_of_the_classpath:c:\oracle\middleware\user_projects\domains\myd omain\lib\altibase.jar;c:\oracle\middleware\user_projects\domains\m ydomain\lib\altibase5.jar>... 2. startweblogic.cmd 파일의 CLASSPATH 에 JDBC 드라이버관련파일을직접추가. 각도메인의관리서버구동스크립트파일인 startweblogic.cmd 를 open 하여 CLASSPATH 항목에 JDBC 드라이버관련파일을직접추가후재구동한다.... set_classpath=%save_classpath%;c:\weblogic_lib\altibase5.jar;c:\web Logic_lib\Altibase.jar... ALTIBASE & WebLogic 연동가이드 14 page of 30
ALTIBASE 와 WebLogic 연동 도메인관리콘솔을사용하여연동할 ALTIBASE 에대한 JDBC 데이터소스를생성후해당 JDBC 데이터소스를사용하는간단한웹응용프로그램을실행하는전체적인연동절차를설명한다. JDBC 데이터소스생성 ALTIBASE 에대한 JDBC 데이터소스를생성하고해당 JDBC 데이터소스의커넥션풀을설정하는절차이다. 참고로하위버전에서는커넥션풀을먼저생성후해당커넥션풀을사용할 JDBC 데이터소스를생성하는방식이었으나상위버전에서는 JDBC 데이터소스를생성하면자동으로커넥션풀이생성된다. 기본적으로 WebLogic 에서사용할 JDBC 드라이버를설정하는방법을참조하여생성할 JDBC 데이터소스에대한 JDBC 드라이버설정이선행되어있어야한다. JDBC 데이터소스생성로컬에설치된 ALTIBASE 5 에대한 JDBC 데이터소스 altibase 를생성한다. 1. 도메인의관리서버에서제공하는관리콘솔로접속한다. http://127.0.0.1:7001/console 2. 관리서버의사용자이름과비밀번호와입력하여로그인한다. ALTIBASE & WebLogic 연동가이드 15 page of 30
3. 관리콘솔메인페이지에서 데이터소스 항목을선택한다. 4. [ 새로만들기 ] 를선택한다. 5. JDBC 데이터소스속성을입력후다음단계로간다. JDBC 데이터소스, JNDI 이름일반적으로동일하게한다. 데이터베이스유형 [ 기타 ] 로선택한다. ALTIBASE & WebLogic 연동가이드 16 page of 30
6. 이어지는 JDBC 데이터소스속성 단계는생략하고다음단계로간다. 7. 트랜잭션옵션 을설정한다. 특별히설정할것이없다면다음단계로간다. 8. 연동할 ALTIBASE 의정보를입력한다. 9. ALTIBASE 접속을위해커넥션풀과관련된 JDBC 정보를입력한다. 드라이버클래스이름 Altibase.jar 를사용하는경우, Altibase.jdbc.driver.AltibaseDriver Altibase#.jar 를사용하는경우, Altibase#.jdbc.driver.AltibaseDriver URL 이전단계에입력한 ALTIBASE 의정보를토대로접속 URL 을입력한다. jdbc:altibase://127.0.0.1:20300/mydb ALTIBASE & WebLogic 연동가이드 17 page of 30
속성 ALTIBASE 4 의경우, user=sys 형식으로접속할사용자를입력해야한다. ALTIBASE 5 의경우는생략해도무방하다. 테스트테이블일반적으로더미 (dummy) 테이블인 dual 을지정한다. 10. [ 구성테스트 ] 를클릭하여접속테스트가성공하면다음단계로넘어간다. 테스트에실패한경우우선적으로연동오류섹션을참고하도록한다. ALTIBASE & WebLogic 연동가이드 18 page of 30
11. JDBC 데이터소스를배치할서버로관리서버를선택후 [ 완료 ] 를선택한다. 12. JDBC 데이터소스가성공적으로추가된것을확인한다. 커넥션풀설정변경 JDBC 데이터소스를생성하면관련커넥션풀이함께생성이된다. 커넥션풀은여러가지속성을가지는데필요시다음절차를참고하여설정을변경하도록한다. 예제로제시된속성변경은필수는아니나기본적으로권장하는사항이다. 1. 관리콘솔메인화면에서 데이터소스 항목을선택, 변경하려는 JDBC 데이터소스를선택후 [ 구성 ] 탭의 [ 접속풀 ] 탭을선택한다. 2. 아래속성을적절히변경후 [ 저장 ] 을선택한다. 초기용량 (Initial Capacity) 기본적인커넥션풀의개수로기본값이 1 이나업무부하를고려하여이보다는큰수치를권장한다. 확인 JDBC 데이터소스생성의성공여부를최종적으로확인한다. WebLogic 에서의확인관리콘솔메인화면에서 데이터소스 항목을선택, 확인하려는 JDBC 데이터소스를클릭후 [ 모니터링 ] 탭의 [ 테스팅 ] 탭에서접속성공여부를확인한다. ALTIBASE & WebLogic 연동가이드 19 page of 30
ALTIBASE 에서의확인 JDBC 데이터소스의접속대상 ALTIBASE 에서세션관련쿼리를수행, 설정한커넥션풀의초기용량만큼세션이존재하는지확인한다. 아래는초기용량을 10 으로지정한경우의실행결과이다. JDBC 타입의세션이 10 개인것을확인할수있다. CMD> isql -s 127.0.0.1 -u sys -p manager -port 20300 ----------------------------------------------------------------- Altibase Client Query utility. Release Version 5.3.3.12 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 isql> set linesize 200 isql> set colsize 20 isql> select comm_name, client_type, 2 db_username, id session_id from v$session; COMM_NAME CLIENT_TYPE DB_USERNAME SESSION_ID -------------------------------------------------------------- TCP 127.0.0.1:11274 JDBC SYS 60 TCP 127.0.0.1:5126 JDBC SYS 61 TCP 127.0.0.1:8710 JDBC SYS 63 TCP 127.0.0.1:12294 JDBC SYS 64 TCP 127.0.0.1:13318 JDBC SYS 65 TCP 127.0.0.1:18694 JDBC SYS 66 TCP 127.0.0.1:19462 JDBC SYS 67 TCP 127.0.0.1:19974 JDBC SYS 68 TCP 127.0.0.1:20486 JDBC SYS 69 TCP 127.0.0.1:21254 JDBC SYS 70 TCP 127.0.0.1:34311 CLI-32LE SYS 72 11 rows selected. 웹응용프로그램생성및배치 연동을위한간략한웹응용프로그램을생성하고배치하는예제이다. 웹응용프로그램생성 이름은 sample, 기본페이지는 welcome.html 인웹응용프로그램을생성한다. 1. 웹응용프로그램의이름으로디렉토리를생성후하위디렉토리로 WEB-INF 를생성한다. 2. WEB-INF 디렉토리에아래내용으로 web.xml 파일을생성한다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> ALTIBASE & WebLogic 연동가이드 20 page of 30
<web-app> <welcome-file-list> <welcome-file>welcome.html</welcome-file> </welcome-file-list> </web-app> 배치 관리콘솔에서제공하는배치메뉴를통하여수동으로직접배치하여도되나편의상개발모드로설치하였을때제공되는 $DOMAIN_HOME/autodeploy 를통한자동배치를활용한다. 1. 생성한웹응용프로그램디렉토리전체를 $DOMAIN_HOME/autodeploy 밑으로위치시킨다. 2. 관리콘솔메인페이지좌측에 배치 메뉴를선택하여자동배치여부를확인한다. 확인 웹응용프로그램의기본페이지예제를통해배치의성공여부를최종적으로확인한다. 1. sample 디렉토리에아래내용으로 welcome.html 를생성한다. <head><title>welcome Page</title></head> <body>welcome!!</body> </html> 2. 생성한페이지에접근하여출력결과를확인한다. 연동예제 JDBC 데이터소스의 JNDI 를통하여 ALTIBASE 에접속하는예제를수행함으로 ALTIBASE 와연동이성공적으로되었는지최종적으로확인한다. ALTIBASE & WebLogic 연동가이드 21 page of 30
ALTIBASE 연동 ALTIBASE 5 와연동하는웹응용프로그램을작성하여접속정보를확인한다. 1. sample 디렉토리에아래내용으로 singleversion.jsp 를생성한다. <%@ page contenttype="text/html;charset=euc-kr" pageencoding="euc-kr"%> <%@ page import="java.sql.*, javax.naming.*, javax.sql.*"%> <head><title>single Version Test Page</title></head> <body> <% Context initctx = new InitialContext(); DataSource ds Connection scon Statement sstmt = (DataSource)initCtx.lookup("altibase"); = ds.getconnection(); = scon.createstatement(); String query = "select '" + "<b>db name: </b>' trim(db_name) '<br>" + "<b>version: </b>' trim(product_signature) '<br>" + "<b>current Time: </b>'"+ " to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') '<hr>'" + " from v$database;"; ResultSet sres = sstmt.executequery(query); sres.next(); out.println("<font size=4><b>altibase Connection Info</b></font><p>"); out.println(sres.getstring(1)); sres.close(); sstmt.close(); scon.close(); %> </body> </html> 2. 생성한페이지로접근하여연동대상 ALTIBASE 의정보가이상없이출력되는지확인한다. 서로다른버전의 ALTIBASE 연동 ALTIBASE 4 와 ALTIBASE 5 와동시에연동하는웹응용프로그램을작성하여접속정보를확인한다. 1. WebLogic 에서사용할 JDBC 드라이버를설정하는방법를참조하여 ALTIBASE 4, ALTIBASE 5 에각각에대한 JDBC 드라이버파일을 WebLogic 에서사용할수있도록사전에설정한다. 2. 각각에대한 JDBC 데이터소스를생성한다. (JNDI 는 JDBC 데이터소스이름과같게한다.) Altibase.jar 를사용하는 ALTIBASE 4 에대한 JDBC 데이터소스 altibase4 ( 드라이버클래스이름 : Altibase.jdbc.driver.AltibaseDriver) Altibase5.jar 를사용하는 ALTIBASE 5 에대한 JDBC 데이터소스 altibase5 ( 드라이버클래스이름 : Altibase5.jdbc.driver.AltibaseDriver ) ALTIBASE & WebLogic 연동가이드 22 page of 30
3. sample 디렉토리에아래내용으로 multiversion.jsp 를생성한다. <%@ page contenttype="text/html;charset=euc-kr" pageencoding="euc-kr"%> <%@ page import="java.sql.*, javax.naming.*, javax.sql.*"%> <head><title>multi Version Test Page</title></head> <body> <% Context initctx = new InitialContext(); DataSource ds1 = (DataSource)initCtx.lookup("altibase5"); DataSource ds2 = (DataSource)initCtx.lookup("altibase4"); Connection scon1 = ds1.getconnection(); Connection scon2 = ds2.getconnection(); Statement sstmt1 = scon1.createstatement(); Statement sstmt2 = scon2.createstatement(); String query = "select '" + "<b>db name: </b>' trim(db_name) '<br>" + "<b>version: </b>' trim(product_signature) '<br>" + "<b>current Time: </b>'"+ " to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') '<hr>'" + " from v$database;"; ResultSet sres1 = sstmt1.executequery(query); ResultSet sres2 = sstmt2.executequery(query); sres1.next(); sres2.next(); out.println("<font size=4><b>first ALTIBASE Connection Info."); out.println("</font></b><p>"+sres1.getstring(1)); out.println("<font size=4><b>second ALTIBASE Connection Info."); out.println("</font></b><p>"+sres2.getstring(1)); sres1.close(); sres2.close(); sstmt1.close(); sstmt2.close(); scon1.close(); scon2.close(); %> </body> </html> 4. 생성한페이지로접근하여연동대상 ALTIBASE 의정보가이상없이출력되는지확인한다. ALTIBASE & WebLogic 연동가이드 23 page of 30
ALTIBASE & WebLogic 연동가이드 24 page of 30
Fail-Over & Load-Balancing 설정 WebLogic 또는 ALTIBASE 에서 Fail-Over 및 Load-Balancing 을설정하는방법에대해설명한다. WebLogic 에서의설정 다중 JDBC 데이터소스생성하면서알고리즘으로 Fail-Over 또는 Load-Balancing 중하나를설정할수있다. 설정방법및상세한내용은관련문서를참조하도록한다. Fail-Over ( 장애조치 ) 접속요청을다중 JDBC 데이터소스목록의첫번째 JDBC 데이터소스에전송하고, 요청이실패할경우다음 JDBC 데이터소스에전송하는방식으로진행한다. 이러한과정은적합한접속을얻거나목록의끝에도달할때까지계속되며목록이끝날때까지접속을얻지못하면예외가발생한다. Load-Balancing ( 로드균형조정 ) 접속요청을다중 JDBC 데이터소스목록의데이터소스에골고루배치한다. 이알고리즘은 Fail-Over 알고리즘을기본적으로제공한다. ALTIBASE 에서의설정 ALTIBASE 버전 5.3.3 부터제공하는라이브러리계층의 Fail-Over 와 Load- Balancing 을이용하여 WebLogic 과연동하는방법에대해설명한다. 설정방법및상세한내용은 ALTIBASE 이중화매뉴얼 을참조하도록한다. Fail-Over & Load-Balancing 개요 ALTIBASE 는 Fail-Over 로 CTF(Connection Time Fail-Over) 와 STF(Service Time Fail- Over) 를제공하며클라이언트사이드의 Load Balancing 을지원한다. Fail-Over CTF 접속시점에장애를인식하여다른가용한 ALTIBASE 서버로접속. STF Load Balancing 접속중에장애발생시 CTF 를수행후세션상태 (auto commit mode, optimizer mode, XA connection 등 ) 를복구한다. statement 에대한 re-prepare, re-binding, execute 는 Fail-Over Callback 을활용하여사용자가직접수행하여야한다. 접속시점에접속가능한 ALTIBASE 서버중에하나를무작위 (Random) 로접속하는클라이언트사이드의제한적인 Load Balancing. 설정방법 JDBC에서는관련속성을 URL에추가하여설정한다. 관련속성은아래와같다. 속성명 설명 Server 기본 ALTIBASE 서버의주소. AlternateServers 가용 ALTIBASE 서버의주소. ConnectionRetryCount 가용 ALTIBASE 서버접속실패시접속시도반복횟수. ALTIBASE & WebLogic 연동가이드 25 page of 30
ConnectionRetryDelay 가용 ALTIBASE 서버접속실패시재접속시도간격. ( 초단위 ) LoadBalance 로드밸런싱여부. on 으로설정하면최초접속시도시기본 ALTIBASE 서버와가용 ALTIBASE 서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본 ALTIBASE 서버에접속하고, 실패하면가용 ALTIBASE 서버로접속한다. SessionFailOver STF 를할것인지여부, off 로할경우 CTF 만수행된다. 설정예제 ALTIBASE 서버 3 대 (192.168.1.81, 192.168.1.82, 192.168.1.83) 를연동하는시스템에서장애발생시 81, 82, 83 순으로 CTF 와 STF 를사용하기위한예제이다. 1. JDBC 데이터소스 altibase5_fo 를아래와같은 URL 로하여생성한다. jdbc:altibase://192.168.1.81:20300/mydb?alternateservers=(192.168.1.82:20300, 192.168.1.83:20300)&ConnectionRetryCount=2&ConnectionRetryDelay=1&LoadBalan ce=off&sessionfailover=on 2. 생성된 JDBC 데이터소스를선택후 [ 구성 ] 탭의 [ 접속풀 ] 탭을선택하여 URL 이끝까지모두정확히인식되었는지확인한다. 3. 지정한횟수 (100) 만큼연동대상 ALTIBASE 의시간, 데이터베이스이름, 포트번호, 버전상세정보를출력하는데 Fail-Over 가성공적으로수행되면쿼리를다시 prepare 후실패했던작업 (i) 부터다시수행하는웹응용프로그램을생성한다. <%@ page contenttype="text/html;charset=euc-kr" pageencoding="euc-kr"%> <%@ page import="java.sql.*, javax.naming.*, javax.sql.*"%> <head><title>failover Test Page</title></head> <body> <% Context initctx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup("altibase5_FO"); ALTIBASE & WebLogic 연동가이드 26 page of 30
Connection scon = ds.getconnection(); PreparedStatement sstmt = null; ResultSet sres = null; String query = "select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss' ' - ')" + " trim(db_name) ' - '" + " (select '[ PORT_NO=' value1 ' ] - '" + " from v$property where name='port_no')" + " trim(product_signature) '<br> '" + "from v$database;"; sstmt = scon.preparestatement(query); for (int i = 0; i < 100; i++) { try { sres = sstmt.executequery(); if ( sres.next() ) { out.println("["+i+"] "+sres.getstring(1)); out.flush(); } Thread.sleep(1000); } catch(sqlexception e) { out.println("<font color=red>["+e.getsqlstate()+"] "+e.getmessage()); if (e.getsqlstate().equals("es_08fo01")) { out.println("</font> Resume from Failed SQL.<br>"); sstmt = scon.preparestatement(query); i--; continue; } else break; } } sstmt.close(); sres.close(); scon.close(); %> </body> </html> 4. 생성한페이지로접근하여연동대상 ALTIBASE 의정보가이상없이출력되는지확인후현재연동대상인 ALTIBASE 를종료시켰을때 Fail-Over 가잘되는지확인한다. ALTIBASE & WebLogic 연동가이드 27 page of 30
연동오류 ALTIBASE 와 WebLogic 연동시발생할수있는일반적인오류에대해서설명한다. Cannot load driver JDBC 드라이버설정이정상적으로완료되지않은상태에서접속을시도할경우발생한다. WebLogic 에서사용할 JDBC 드라이버를설정하는방법을참조하도록한다. Can not make a database connection to the given URL / Invalid Altibase URL (No suitable driver) 아래와같이접속 URL 에오류가있을경우오류가발생한다. 잘못된형식, 오타 jdbc 항목을 Altibase 가아닌다른이름으로설정한경우 ( 이경우는버전에따라 No suitable driver 가발생하기도한다.) jdbc:otherdbms://127.0.0.1:20300/mydb Could not create pool connection JDBC 데이터소스생성시커넥션풀설정에오류가있을때발생한다. 다양한경우가있으나대표적인경우는아래와같다. 접속대상이 ALTIBASE 4 인경우는속성 (property) 에 user=sys 형식으로접속할사용자를입력해야한다. Client unable to establish connection / Communication link failure 아래의경우, Client unable to establish connection 오류가발생한다. ( 버전에따라 Communication link failure 가발생하기도한다.) ALTIBASE 서버가구동되어있지않는경우 접속 URL 에서 ALTIBASE 서버의 ip 주소또는포트번호를잘못설정하여접속이불가능한경우 아래는연동할 ALTIBASE 서버의 ip 주소가 192.168.1.81 이고포트번호가 20300 인데다른값으로잘못지정한경우의예이다. jdbc:altibase://192.168.1.80:20800/mydb ALTIBASE & WebLogic 연동가이드 28 page of 30
Hang 현상 ALTIBASE JDBC 드라이버와 ALTIBASE 서버의 CM 프로토콜버전이다른상태에서접속을시도할경우 WebLogic 버전에따라행 (hang) 과같은현상이발생할수도있다. 이런현상이발생하게되면대부분 WebLogic 서버인스턴스를재구동해야만하므로사전에주의가필요하다. 관련된내용은 ALTIBASE JDBC 드라이버버전을확인하는방법을참조하도록한다. ALTIBASE & WebLogic 연동가이드 29 page of 30
알티베이스 서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 1008 호 02-2082-1000 http://www.altibase.com 대전사무소대전광역시서구둔산동 921 주은리더스텔 901 호 042-489-0330 기술지원센터 02-2082-1114 support@altibase.com ATC (ALTIBASE Technical Center) http://atc.altibase.com Copyright c 2000~2010 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된 ALTIBASE 제품의특징이나기능의개발, 발표등의시기는 ALTIBASE 재량입니다. ALTIBASE는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. ALTIBASE & WebLogic 연동가이드 30 page of 30