Altibase API Manual

Size: px
Start display at page:

Download "Altibase API Manual"

Transcription

1 ALTIBASE HDB Application Development Application Program Interface User s Manual Release (April 16, 2015)

2 ALTIBASE Application Development Application Program Interface User s Manual Release Copyright c 2001~2015 ALTIBASE Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 서울시구로구구로동 대륭포스트타워 Ⅱ 10 층전화 : 팩스 : 고객서비스포털 : homepage:

3 목차 서문... 5 이매뉴얼에대하여 PHP Interface ALTIBASE HDB PHP 모듈참고사항 PHP 연동을위한 ODBC 매니저설치 ODBC 연결을위한 PHP 함수 PERL DBD DBI Perl DBD와 DBI 개요 Perl 패키지설치 ALTIBASE HDB DBD 설치 NET Data Provider NET Data Provider의개요 NET Data Provider 사용방법 NET Data Provider 인터페이스 NET Data Provider 예제 XA Interface XA 개요 XA 인터페이스 XA 사용 XA 사용시제약사항 JDBC 분산트랜잭션 XA를사용한애플리케이션의문제해결 iloader API iloader API 개요 iloader API 사용 iloader API 데이터구조체 목차 3

4 iloader API CheckServer API CheckServer API 개요 CheckServer API 사용 CheckServer API 데이터구조체 CheckServer API 찾아보기 API User s Manual

5 서문 서문 5

6 이매뉴얼에대하여 이매뉴얼은 API 사용법에대해설명한다. 대상사용자 이매뉴얼은다음과같은 ALTIBASE HDB 사용자를대상으로작성되었다. 데이터베이스관리자 성능관리자 데이터베이스사용자 응용프로그램개발자 기술지원부다음과같은배경지식을가지고이매뉴얼을읽는것이좋다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이터베이스사용경험또는데이터베이스개념에대한이해 컴퓨터프로그래밍경험 데이터베이스서버관리, 운영체제관리또는네트워크관리경험 소프트웨어환경 이매뉴얼은데이터베이스서버로 ALTIBASE HDB 버전 을 사용한다는가정하에작성되었다. 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장 PHP Interface 이장은 PHP 에서 ODBC 함수를이용하여 ALTIBASE HDB 와연동하는방법을설명한다. 제 2 장 PERL DBD DBI 이장은 PerL DBD (Database Driver) 와 DBI (Database 6 API User s Manual

7 Interface) 가무엇인지살펴보고, 이를사용하기위해 Perl 패키지설치및 ALTIBASE HDB DBD 설치를어떻게하는지, ALTIBASE HDB DBD 검증등은어떻게이뤄지는지에대해설명한다. 제 3 장.NET Data Provider 이장은마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 와함께사용하기위한방법을설명한다. 제 4 장 XA Interface 이장은 XA 표준을소개하고, 분산트랜잭션의기본개념과 XA 인터페이스를설명한다. 그리고 ODBC, Embedded SQL, JDBC 프로그램에서글로벌트랜잭션을사용하여 ALTIBASE HDB 에접근하는방법에대해설명한다. 제 5 장 iloader API 이장은 ALTIBASE HDB 서버로부터데이터를다운로드또는서버로데이터를업로드하는응용프로그램을작성할수있는인터페이스인 ALTIBASE HDB iloader API 를소개한다. 제 6 장 CheckServer API 이장은 ALTIBASE HDB 서버가비정상종료했는지를감시하는응용프로그램을작성하기위해사용하는인터페이스인 ALTIBASE HDB CheckServer API 를소개한다. 문서화규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 구문다이어그램 샘플코드규칙 구문다이어그램 이매뉴얼에서는다음구성요소로구축된다이어그램을사용하여, 명령문의구문을설명한다. 구성요소 예약어 의미명령문이시작한다. 완전한명령문이아닌구문요소는화살표로시작한다. 명령문이다음라인에계속된다. 완전한명령문이아닌구문요소는이기호로종료한다. 서문 7

8 명령문이이전라인으로부터계속된다. 완전한 명령문이아닌구문요소는이기호로시작한다. ; 명령문이종료한다. SELECT 필수항목 선택적항목 NOT ADD 선택사항이있는필수항목. 한항목만제공해야한다. DROP 선택사항이있는선택적항목 ASC DESC ASC 선택적항목. 여러항목이허용된다. 각반복앞부분에 콤마가와야한다. DESC, 샘플코드규칙 코드예제는 SQL, Stored Procedure, isql 또는다른명령라인 구문들을예를들어설명한다. 아래테이블은코드예제에서사용된인쇄규칙에대해설명한다. 규칙 의미 예제 [ ] 선택항목을표시 VARCHAR [(size)] [[FIXED ] VARIABLE] 필수항목표시. 반드시하나이상을선택해야되는표시 ENABLE DISABLE COMPILE 선택또는필수항목표시의인자구분표시. 그이전인자의반복표시. 예제코드들의생략되는것을. 표시 ENABLE DISABLE COMPILE [ ENABLE DISABLE COMPILE ] SQL> SELECT ename FROM employee; ENAME API User s Manual

9 그밖에기호기울임꼴소문자대문자 위에서보여진기호이외에기호들구문요소에서사용자가지정해야하는변수, 특수한값을제공해야만하는위치지정자사용자가제공하는프로그램의요소들, 예를들어테이블이름, 칼럼이름, 파일이름등시스템에서제공하는요소들또는구문에나타나는키워드 SWNO HJNO HSCHOI rows selected. EXEC :p1 := 1; acc NUMBER(11,2); SELECT * FROM table_name; CONNECT userid/password; SELECT ename FROM employee; DESC SYSTEM_.SYS_INDICES_; 관련자료 자세한정보를위하여다음문서목록을참조하기바란다. Installation Guide Administrator s Manual Replication Manual CLI User's Manual Precompiler User s Manual ODBC User's Manual isql User s Manual Utilities Manual Error Message Reference 온라인매뉴얼 Altibase 고객서비스포털 (http://support.altibase.com) 에서국문 및영문매뉴얼 (PDF, HTML) 을받을수있다. 서문 9

10 Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 보내실때에는아래내용과함께고객서비스포털 (http://support.altibase.com/kr/) 로보내주시기바랍니다. 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서이주소로보내주시면정성껏처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 10 API User s Manual

11 1. PHP Interface 이장에서는 PHP 에서 ODBC 함수를이용하여 ALTIBASE HDB 와 연동하는방법을설명한다. PHP Interface 11

12 ALTIBASE HDB PHP 모듈참고사항 PHP 에서지원하는데이터타입은다음과같다. resource, int, bool, double, float, string, array, HashTable ALTIBASE HDB 서버의포트번호와 ALTIBASE HDB 에서제공한샘플프로그램의 db.php 에서포트번호를맞춰야한다. 12 API User s Manual

13 PHP 연동을위한 ODBC 매니저설치 유닉스또는윈도우환경에서 PHP 로 ALTIBASE HDB 에연동을하기위해서는먼저 ODBC 매니저를설치해야한다. 이절에서는유닉스, 리눅스와윈도우에서 ODBC 매니저를설치하고사용환경을설정하는방법을설명한다. 유닉스와리눅스 리눅스또는유닉스환경에서다음절차대로 ODBC 매니저를 설치한다. 1. unixodbc 다운로드한다. unixodbc 홈페이지 (http://www.unixodbc.org) 에서 다운로드할수있다. 2. unixodbc 설치한다. 다운로드한 unixodbc 소스파일을컴파일해야한다. 컴파일된라이브러리를특정위치에설치하려면, configure 할 때 prefix 옵션으로경로를입력한다../configure -prefix= 설치경로 -enable-gui=no - enabledrivers=no make make install 3. unixodbc 환경을설정한다. ODBCSYSINI 환경변수의값을 ALTIBASE HDB 설치계정의홈디렉터리경로로설정한다. export ODBCSYSINI=~ 4. unixodbc Driver Manager 가설치된경로를다음과같이 환경변수에추가한다. 라이브러리경로를설정하는환경변수는 플랫폼과운영체제의 bit 에따라서 LD_LIBRARY_PATH, LD_LIBRARY_PATH_64, SHLIB_PATH 중의하나일수있다. 다음은 unixodbc 를 /usr/local/odbcdrivermanager32 또는 /usr/local/odbcdrivermanager64 에설치한예이다. export LD_LIBRARY_PATH= /usr/local/odbcdrivermanager32/lib:$ld_library_path export LD_LIBRARY_PATH_64= /usr/local/odbcdrivermanager64/lib:$ld_library_path_64 PHP Interface 13

14 5. ODBCSYSINI 환경변수의경로에다음 2 개의파일을생성한다. odbc.ini odbcinst.ini 6. odbcinst.ini 는실제내용이없는 0 byte 파일이다. 7. odbc.ini 에는 DSN 이름및 ALTIBASE HDB ODBC 드라이버 파일의위치, 서버의 IP 주소, 접속포트번호를아래처럼 설정한다. [Altibase] Driver = /home/altibase/altibase_home/lib/libaltibase_odbc.so Server = Port = 윈도우 윈도우환경은 ODBC 매니저가기본으로설치되어있어, ALTIBASE HDB 를설치할때 ODBC 매니저에 ALTIBASE HDB ODBC 드라이버를자동으로등록한다. 14 API User s Manual

15 ODBC 연결을위한 PHP 함수 ALTIBASE HDB 는표준 ODBC 를지원함으로써 PHP 에서이 ODBC 함수들을사용하여 ALTIBASE HDB 서버와연동할수있다. PHP 에서사용하는 ODBC 함수들에대한자세한설명은아래의 PHP 공식매뉴얼사이트를참조한다 : Sample Test <? // SYSTEM DSN, USER_ID, USER_PASSWORD $conn = odbc_connect("altibase", "SYS", "MANAGER"); if ($conn) // direct-execution echo "now, i create table t1 (id integer, name char(20)<br>"; odbc_exec($conn, "drop table t1"); odbc_exec($conn, "create table t1 (id integer, name char(20))"); // prepare-execution echo "now, i insert into t1 value (100, Lee)<br>"; $stmt = odbc_prepare ($conn, "insert into t1 values (?,?)"); $Insert = array (100, "Lee"); if (!odbc_execute($stmt, &$Insert)) echo ("error"); // single-selection $res = odbc_do ($conn, "select id, name, sysdate from T1"); odbc_fetch_row ($res); $ID = odbc_result($res, 1); $NAME = odbc_result($res, 2); $DATE = odbc_result($res, 3); echo ("id = $ID, name = $NAME datetime = $DATE <br>"); odbc_close($conn);?> PHP Interface 15

16

17 2. PERL DBD DBI 이장에서는 PerL DBD (Database Driver) 와 DBI (Database Interface) 가무엇인지살펴보고, 이를사용하기위해 Perl 패키지설치및 ALTIBASE HDB DBD 설치를어떻게하는지, ALTIBASE HDB DBD 검증등은어떻게이뤄지는지에대해설명한다. PERL DBD DBI 17

18 Perl DBD 와 DBI 개요 DBI 는 Perl 을위한표준데이터베이스인터페이스모듈이다. 이는일련의메소드 (methods) 와속성 (attributes) 을정의한것으로, 실제사용하는데이터베이스에독립적인일관된인터페이스를제공한다. DBI 는애플리케이션에서동일한인터페이스를사용하여여러다른데이터베이스에서제공하는 DBD 에접근하는것을가능하게한다. 실제로데이터베이스와통신을하는것은 DBD 이다. ALTIBASE HDB 에서제공하는드라이버 (DBD) 를 DBD::altibase 라고부른다. 이들메소드와속성들은 database 메소드와속성, 그리고 statement 메소드와속성으로나뉘어져있다. DBI Altibase DBD Oracle DBD DB2 DBD mysql DBD Altibase Oracle DB2 mysql [ 그림 2-1] PERL DBD 와 DBI 구조도 18 API User s Manual

19 Perl 패키지설치 Perl 패키지설치절차 1. 사용하는장비의운영체제의버전에맞게 Perl 패키지를 다운로드받는다. ( 예를들어 SunOS 의 Perl 패키지는 에서다운로드받을수있다.) 2. 임의의디렉터리에서패키지 (ex. perl tar.gz) 의압축을 푼다. gzip -cd perl tar.gz tar xvf 3. Perl 패키지의압축을푼디렉터리에서 configure 를수행한다../configure 4. Perl 패키지의압축을푼디렉터리에서 make 를수행한다. make 5. Perl 패키지의압축을푼디렉터리에서 root 계정으로 컴파일한모듈을설치한다. make install 6. Event 모듈설치를위해서 event 패키지 (ex. Event-1.00.tar.gz) 를다운로드받는다. 7. 임의의디렉터리에서 Event-1.00.tar.gz 의압축을푼다. gzip -cd Event-1.00.tar.gz tar xvf 8. Event 패키지의압축을푼디렉터리에서 configure 를 수행한다../configure 9. Event 패키지의압축을푼디렉터리에서 make 를수행한다. make 10. Event 패키지의압축을푼디렉터리에서 root 계정으로 컴파일한모듈을설치한다. make install PERL DBD DBI 19

20 ALTIBASE HDB DBD 설치 ALTIBASE HDB PERL DBD 설치절차 1. perl V 를실행하여 dlext 설정이올바른지확인한다. 이때 HP 는 sl, 다른플랫폼은 so 이어야한다. 이값이 잘못되었으면다시 Perl 을설치한다. 2. Perl DBI 설치 Perl DBD 컴파일하기위한선행절차로 Perl DBI 패키지를 설치한다. 방법 1) root 계정으로 # perl -MCPAN -e shell prompt> install DBI 방법 2) 상기방법으로안될경우, 아래 ftp 사이트에서 DBI 패키지를다운받아컴파일한후에설치한다. ftp://ftp.nuri.net/pub/cpan/modules/by-module/dbi 2-1) perl Makefile.PL 2-2) make 2-3) make install 3. 아래위치에서 ALTIBASE HDB Perl DBD 를다운로드하고설치한다. ALTIBASE HDB Perl DBD 는 32bit 이기때문에 ALTIBASE HDB 32bit 클라이언트패키지또는 32bit 서버패키지가이미설치되어있어야하고, ALTIBASE_HOME 환경변수도올바르게설정되어있어야한다. ERL-DBD/altibase-perlDBD.tar.gz gzip cd altibase-perldbd.tar.gz tar xvf - 4. 다운로드한패키지내의 install.mk 를사용해서 ALTIBASE HDB DBD 를생성하는데필요한 Makefile 을생성한다. make -f install.mk 5. 컴파일한다. make ALTIBASE HDB Perl DBD 는 shared library 형태로생성된다. HP 플랫폼에서는 altibase.sl 의이름으로생성된다. HP 이외의플랫폼에서는 altibase.so 의이름으로생성되며, 생성되는위치는 blib/arch/auto/dbd/altibase 이다. 20 API User s Manual

21 6. root 계정으로 make install 을실행한다. ALTIBASE HDB Perl DBD 가 Perl 에설치된다. 이예제에서는 ALTIBASE HDB DBD 는아래위치에설치된다. /opt/perl_5.8.8/bin/lib/site_perl/5.8.8/ia64.arch REV_0/auto/DBD/altibase 7. LD_PRELOAD 환경변수를설정한다. HP 또는일부플랫폼은이단계를수행해야한다. 이작업을 수행하지않을경우오류메시지가나타난다. 8. perl test.pl 을수행해서테스트한다. ALTIBASE HDB 서버를구동한후, test.pl 파일의소스코드를 아래와같이수정한후에 perl test.pl 을수행한다. my $dbh = DBI- >connect("dbi:altibase:dsn= ;uid=sys;pwd =MANAGER;CONNTYPE=1;NLS_USE=US7ASCII;PORT_NO=209 99", "", "", 'RaiseError' => 1); PERL DBD DBI 21

22

23 3..NET Data Provider 이장에서는마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 와함께사용하기위한방법을설명한다..NET Data Provider 23

24 .NET Data Provider 의개요 개요 ALTIBASE HDB.NET Data Provider 는마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 에서사용하기위해구현한것이다. 즉, 닷넷프레임워크 (.NET Framework) 기반의애플리케이션에서 ALTIBASE HDB 를사용하기위해서는 ALTIBASE HDB.NET Data Provider 를사용해야한다. ADO.NET 인터페이스는닷넷프레임워크를사용하여 DBMS 와같은데이터소스에접근하게되며, 닷넷프레임워크는 ODBC 와 OLEDB 인터페이스를지원하며, SQLServer 와 ORACLE 에접근하는방법을기본으로제공한다. 닷넷프레임워크에기반한 Data Provider 의역할은데이타소스에접근하여명령어를수행하고결과값을추출해오는것이다. 이렇게가져온결과값을 ADO.NET DataSet 클래스를이용하여개발자가가공하고다시데이타소스에반영하게된다. ADO.NET 인터페이스가장큰장점은 ALTIBASE HDB 버전을업그레이드하더라도, 새로운 ALTIBASE HDB 와일치하도록 CLI 라이브러리만업그레이드하면 Data Provider 나애플리케이션을변경하지않고계속사용할수있다는것이다. 기타 ADO.NET 의자세한내용은마이크로소프트의홈페이지 (http://www.msdn.com) 를참고한다. 요구사항.NET Framework 사용할 ADO.NET 버전에호환하는.NET Framework 을설치해야한다. 예를들어, ADO.NET 1.0 을사용하는경우에는.NET Framework 1.1 이상을, ADO.NET 2.0 을사용할때에는.NET Framework 2.0 SP1 이상을설치해야한다. ADO.NET 버전에따라서다른.NET Data Provide 라이브러리파일을제공하므로, 사용하려는 ADO.NET 버전에적합한라이브러리를사용해야한다. Altibase CLI 24 API User s Manual

25 ALTIBASE HDB.NET Data Provider 는 Altibase CLI 라이브러리를이용하여데이터베이스서버에접속하므로 Altibase CLI 라이브러리를설치해야한다. 주의사항및제약사항.NET Data Provider 는 CLI 라이브러리를사용하므로해당시스템에맞는 odbccli_sl.dll 과함께사용해야한다..NET Framework 버전에따라일부구현이다르므로, 해당하는.NET Framework 버전을위해빌드된.NET Data Provider 를사용해야한다. ColumnName 속성은 DataReader, CommandBuilder 등에서대소문자를구별한다. 테이블을생성할때큰따옴표를이용해칼럼이름을감싸지않은경우, 컬럼이름은대문자로변환된다. 이경우대문자로된칼럼이름을사용해야올바른값을가져올수있다. NUMBER, NUMERIC, FLOAT, DECIMAL 타입컬럼으로부터 DataReader.GetValue() 를사용해서데이터를가져올때, 데이터손실이발생할수있다. 이는이함수가숫자데이터를.NET System.Decimal 타입으로변환하는데, 이때가져온데이터의범위가 System.Decimal 로표현할수있는범위를넘는경우이다. ALTIBASE HDB.NET Data Provider 는다중쿼리문의실행을지원하지않는다. 여러개의 SQL 문을한번에실행하려면저장프로시저를사용하도록한다..NET Data Provider 25

26 .NET Data Provider 사용방법 ALTIBASE HDB 가설치된디렉터리 ( 환경변수 %ALTIBASE_HOME%) 내의 lib 디렉터리에.NET Data Provider 가존재한다. 파일의이름은다음과같다. %ALTIBASE_HOME%\lib\Altibase.Data.AltibaseClient.dll.NET 응용프로그램컴파일 ALTIBASE HDB.NET Data Provider 를사용한애플리케이션은아래 2 가지방법으로컴파일할수있다. 커맨드라인에서컴파일하는방법 커맨드라인에서소스파일을컴파일을할때에는아래와같이 DLL 를참조합니다. csc /r:%altibase_home%\lib\altibase.data.altibaseclient.dll 프로그램명.cs IDE 환경에서컴파일하는방법 IDE (Integrated Development Environment) 환경에서.NET Data Provider 등록하는방법이다. ( 예 MS Viaual Studio) 1. 새프로젝트를연다. 26 API User s Manual

27 [ 그림 3-1] 새프로젝트열기 2..NET Data Provider 를등록하기위해, References 에마우스 오른쪽버튼을클릭하여 참조추가 메뉴를클릭한다. [ 그림 3-2] 프로젝트의참조추가설정 3. ALTIBASE HDB 설치디렉터리내의 lib 디렉터리에서 Altibase.Data.AltibaseClient.dll 를찾아등록한다. ALTIBASE.NET Data Provider 27

28 HDB 설치디렉터리는환경변수 %ALTIBASE_HOME% 으로 확인한다. [ 그림 3-3].NET Data Provider 를프로젝트에등록 4. 프로젝트를빌드하고생성된실행파일을실행한다. 배열바인딩 (Array Binding) ALTIBASE HDB.NET Data Provider 는배열바인딩을지원하는데, 즉배열형태의데이터에대하여파라미터바인딩이가능하다. 이는일반적인바인딩방법보다적은네트워크비용으로여러개의열을처리하므로속도향상을기대할수있다. 현재는입력 (Input) 파라미터로만배열바인딩을지원하며, 출력 (Output) 이나입출력공용파라미터의배열바인딩은지원하지않는다. 배열바인딩순서는다음과같다. 1. 바인드하려는변수들을모두배열로잡는다. 이때배열 크기는 AltibaseCommand 클래스의 ArrayBindCount 값보다 크거나같아야한다. 2. 배열변수들을파라미터에바인드한다. 만약바인드하려는 칼럼이 CHAR, VARCHAR, BLOB 타입인경우에는, 파라미터 28 API User s Manual

29 설정시 AltibaseParameter 클래스의 ArrayBindSize 를배열 요소중최대큰것과같은크기로설정해야한다. 3. AltibaseCommand 클래스의 ArrayBindCount 값을세팅한다. 예 : 한번에 100 개씩입력하는경우 ArrayBindCount = 100; 4. SQL 구문을실행한다. 주의사항 배열바인딩할때다음사항을주의해야한다. ArrayBindCount 의유효범위는 1 부터 까지이다. 배열 크기를무조건크게잡는다고속도가빨라지는것은아니므로 적당한크기로바인딩한다. CHAR, VARCHAR, BLOB 타입의경우배열단일요소의데이터 길이가 ArrayBindSize 를넘을경우에러가발생한다. NCHAR, NVARCHAR 타입의경우, ArrayBindSize 값은 byte 가 아닌문자수로세팅해야한다. BLOB 타입의경우, 소스프로그램에서배열타입으로 Object 를 사용하고, 배열원소는 byte[] 를사용한다. 예 : byte[] var1; byte[] var2; Object[] var = new Object[2] var1, var2; CLOB, BYTE, NIBBLE, BIT, VARBIT, GEOMETRY 타입의배열 바인딩은지원하지않는다. 예제 using System; using System.Data; using Altibase.Data.AltibaseClient; class ArrayBind static void Main() AltibaseConnection con = new AltibaseConnection(); con.connectionstring = "DSN= ;UID=sys;PWD=manager;NLS_USE=KO16KSC5601"; con.open(); Console.WriteLine("Connected successfully"); // table: create table t1 (c1 int, c2 varchar(12)); // 3 records const int arraybindcount = 3; int[] c1 = new int[arraybindcount] 100, 200, 300; String[] c2 = new String[arrayBindCount] "APPLE", "ORANGE", "GRAPE" ;.NET Data Provider 29

30 AltibaseCommand cmd = new AltibaseCommand(); cmd.connection = con; //===================================================== // bind parameters //===================================================== cmd.commandtext = "insert into t1 values (?,?)"; AltibaseParameter prm1 = new AltibaseParameter("c1", DbType.Int32); prm1.direction = ParameterDirection.Input; prm1.value = c1; AltibaseParameter prm2 = new AltibaseParameter("c2", DbType.AnsiString); prm2.direction = ParameterDirection.Input; prm2.value = c2; prm2.arraybindsize = 12; // max element size in bytes cmd.parameters.add(prm1); cmd.parameters.add(prm2); //===================================================== // execute INSERT //===================================================== cmd.arraybindcount = arraybindcount; cmd.executenonquery(); //===================================================== // SELECT //===================================================== IDataReader sdatareader = null; cmd.parameters.clear(); cmd.commandtext = "select * from t1"; sdatareader = cmd.executereader(); while (sdatareader.read()) for (int i = 0; i < sdatareader.fieldcount; i++) Console.Write("[" + sdatareader.getvalue(i) + "] "); Console.WriteLine(); sdatareader.close(); con.close(); con.dispose(); ALTIBASE HDB.NET Data Provider 사용선언 ALTIBASE HDB.NET Data Provider 클래스들을사용려면, 먼저아래와같이선언하여야있다. 30 API User s Manual

31 using Altibase.Data.AltibaseClient;.NET Data Provider 31

32 트랜잭션처리 ADO.NET 에서제공하는트랜잭션처리인터페이스를이용하여 트랜잭션을처리할수있다. ADO.NET 인터페이스를이용한트랜잭션처리는 AltibaseConnection.BeginTransaction() 와 AltibaseTransaction 객체를사용한다. AltibaseConnection sconn = new AltibaseConnection(sConnStr); sconn.open(); // 트랜잭션시작 AltibaseTransaction strans = sconn.begintransaction(); AltibaseCommand scmd = sconn.createcommand(); // 트랜잭션작업... // TODO // 트랜잭션끝 strans.commit(); 스키마 ALTIBASE HDB 는 GetSchema() 메소드를사용해서 MetadataCollections, DataSourceInformation, DataTypes, Restrictions, ReservedWords 와같은공통스키마이외에도 ALTIBASE HDB 에서지원하는다음과같은메타정보스키마를조회해볼수있도록지원한다. 스키마메타테이블설명 Users Tables Views SYS_USERS_ SYS_TABLES_ SYS_VIEWS_ 사용자관련정보를저장하는메타테이블테이블관련정보를저장하는메타테이블뷰관련정보를저장하는메타테이블 32 API User s Manual

33 Sequences V$SEQ Synonyms SYS_SYNONYMS_ Indexes SYS_INDICES_ Columns SYS_COLUMNS_ Constraints SYS_CONSTRAINTS_ Procedures SYS_PROCEDURES_ ProcedureParameters SYS_PROC_PARAS_ [ 표 3-1] ALTIBASE에서지원하는메타정보스키마 시퀀스관련정보를저장하는성능뷰시노님관련정보를저장하는메타테이블인덱스정보를기록하고있는메타테이블칼럼관련정보를저장하는메타테이블제약조건관련정보를저장하는메타테이블저장프로시저및함수관련정보를저장하는메타테이블저장프로시저및함수의파라미터관련정보를저장하는메타테이블 ALTIBASE HDB 에서지원하는각각의스키마에대한자세한 설명은 General Reference 의데이터딕셔너리를참조한다. ALTIBASE HDB.NET Data Provider 클래스 ALTIBASE HDB 의.NET Data Provider 는데이타베이스와의연결, 질의실행및결과검색을위한기능을제공한다. 이기능들은아래표에서보여주는 4 개의클래스에기반하고있다. 각클래스들의하위메소드기능은마이크로소프트의 ADO.NET 문서을참조한다. 클래스 AltibaseConnection 설명 데이터베이스와의연결을설정하고 트랜잭션을시작할수있다..NET Data Provider 33

34 데이터베이스에서질의문을실행하고 AltibaseCommand 매개변수를표시할수있다. 데이터베이스에서명령수행에대한 AltibaseDataReader 결과를가져와출력할수있다. DataSet에데이터를채우고 AltibaseDataAdapter 데이터베이스로저장된데이터를갱신할수있다. [ 표 3-2] 연결및질의실행, 결과검색을위한 ALTIBASE HDB.NET Data Provider 클래스 ALTIBASE HDB.Net Data Provider 는예외처리, 저장프로시저실행과트랜잭션처리등을위해다음클래스들을제공한다. 클래스설명데이터베이스오류나,.Net Framework을 AltibaseException 통해받은클라이언트오류를받아표시할수있다. SQL 명령및저장프로시저에대한 AltibaseParameter 입력, 출력파라미터를정의한다. 데이터베이스에서트랜잭션관련명령을 AltibaseTransaction 수행할수있도록한다. [ 표 3-3] 예외처리, 트랜잭션처리를위한 ALTIBASE HDB.NET Data Provider 클래스 ALTIBASE HDB.NET Data Provider 데이터타입 테이블칼럼이나파라미터의데이터타입을선언하기위해서 AltibaseType 클래스가사용된다. 아래표를통해 ALTIBASE HDB 가제공하는데이터타입과.NET Framework 의데이터타입간의관계를확인할수있다. ALTIBASE HDB AltibaseType 데이터베이스칼럼.NET Framework 타입 BigInt BIGINT Int64 Bit BIT Byte[] Blob BLOB Byte[] Byte BYTE Byte[] Char CHAR String 34 API User s Manual

35 Clob CLOB String DateTime DATE DateTime Decimal DECIMAL Decimal Double DOUBLE Double Float FLOAT Decimal Geometry GEOMETRY Byte[] Integer INT Int32 NChar NCHAR String Nibble NIBBLE Byte[] Number NUMBER Decimal Numeric NUMERIC Decimal NVarChar NVARCHAR String Real REAL Float SmallInt SMALLINT Int16 VarBit VARBIT Byte[] VarChar VARCHAR String [ 표 3-4] 데이터타입간의관계 SQL 구문내에내셔널캐릭터를포함하는상수문자열을 사용하려면, 해당문자열바로앞에 N 을붙이면된다..NET Data Provider 35

36 .NET Data Provider 인터페이스 인터페이스설정 ADO.NET 2.0 부터프로바이더에독립적인프로그래밍이가능하다. DbProviderFactories 클래스는사용자가요구하는프로바이더의 DbProviderFactory 클래스의인스턴스를얻게해준다. 따라서사용자는 DbProviderFactory 인스턴스로부터 DbConnection 이나 DbCommand 객체를생성하여사용할수있다. 그러나 DbProviderFactories 를사용하기위해서는.NET Framework 의설정파일에해당.NET Data Provider 의팩토리정보가등록되어야있어야한다. 팩토리정보를등록하기위한다음두가지방법이있다..NET Framework 설정파일에등록하는방법 애플리케이션환경설정파일을사용하는방법환경설정파일은 xml 파일로되어있으며, 프로바이더정보는 system.data - DbProviderFactories 의하위항목에있다. 여기에 ALTIBASE HDB.NET Data Provider 에대한정보를추가하면된다..NET Framework 설정파일에등록하는방법.NET Framework 의설정파일은설치된폴더하위에있는 CONFIG 폴더에 machine.config 라고저장되어있다. 일반적으로.NET Framework 는 %windir%\microsoft.net\framework 에 버전별로설치된다..NET Framework 2.0 의경우설정파일의위치는보통다음과 같다. c:\windows\microsoft.net\framework\v \config\ machine.config machine.config 파일을열어서 system.data - DbProviderFactories 의하위아이템으로 ALTIBASE HDB.NET Data Provider 에대한정보를다음과같이추가한다. <add name="altibase Data Provider" invariant="altibase.data.altibaseclient" description="altibase Data Provider" 36 API User s Manual

37 애플리케이션환경설정파일을사용하는방법 type="altibase.data.altibaseclient.altibasefactory, Altibase.Data.AltibaseClient" /> 애플리케이션환경설정파일은 " 실행파일이름.config" 라는이름으로, 실행파일이있는디렉터리에저장된다. 예를들어실행파일의이름이 AltiTest.exe 일경우애플리케이션환경설정파일은 AltiTest.exe.config 가된다. 아래는환경설정파일의예이다. <?xml version="1.0" encoding="utf-8"?> <configuration> <system.data> <DbProviderFactories> <remove invariant="altibase.data.altibaseclient" /> <add name="altibase Data Provider" invariant="altibase.data.altibaseclient" description="altibase Data Provider" type="altibase.data.altibaseclient.altibasefactory, Altibase.Data.AltibaseClient" /> </DbProviderFactories> </system.data> </configuration> 지원하지않는인터페이스 ALTIBASE HDB 는 ADO.NET 버전에따라다음과같이지원하지 않는인터페이스가있다. 각버전별로지원하지않는구성요소들은 모두 NotImplementedException 을발생시킨다. ADO.NET 1.X 에서지원하지않는인터페이스 클래스 구분 구성요소 AltibaseConnection M ChangeDatabase M Clone P Database AltibaseCommand M Cancel M Clone P CommandTimeout P CommandType AltibaseDataReader M GetData.NET Data Provider 37

38 P Depth AltibaseParameter M Clone AltibaseParameterCollection M AddRange M: Method P: Property A: 클래스전체 AltibaseDataReader.Depth 는언제나 0 을반환한다. ADO.NET 2.0 에서지원하지않는인터페이스 ADO.NET 1.X 에서지원하지않는인터페이스는 ADO.NET 2.0 에서도지원하지않는다. 클래스 구분 구성요소 AltibaseFactory M CreateDataSourceEnumerator M CreatePermission AltibaseConnection M EnlistTransaction(Transaction transcation) P DataSource P ServerVersion AltibaseDataReader M GetDbDataReader M GetProviderSpecificFieldType M GetProviderSpecificValue M GetProviderSpecificValues P HasRows P VisibleFieldCount AltibaseDataAdapter M AddToBatch(IDbCommand command) M CrearBatch M ExecuteBatch M GetBatchedParameter M GetBatchedRecordsAffected(int commandidentifier, out int recordsaffected, out Exception error) M InitializeBatching M TerminateBatching AltibaseParameter M ResetDbType 38 API User s Manual

39 AltibaseDataSourceEnumerator AltibasePermission AltibasePermissionAttribute A A A 상속받는추상클래스에기본구현이있는메소드는해당하는기본메소드를사용한다. 기본구현을제공하는멤버는다음과같다. CreateCommandBuilder CreateConnectionStringBuilder CreateDataSourceEnumerator CreatePermission GetProviderSpecificFieldType GetProviderSpecificValue GetProviderSpecificValues VisibleFieldCount GetBatchedRecordsAffected(int commandidentifier, out int recordsaffected, out Exception error) 기본구현이없는멤버는모두 NotImplementedException 을발생시킨다..NET Data Provider 39

40 .NET Data Provider 예제 연결문자열 (Connection String).NET 응용프로그램에서 ALTIBASE HDB 에접속하기위한연결 문자열은다음과같다. Server= ;PORT=20091;User=sys;Password=manage r DDL 과 DML 단순예제 AltibaseConnection 클래스를사용하여 ALTIBASE HDB 에 접근하여 test_goods 테이블을생성하고데이터를삽입한후 검색한다. using Altibase.Data.AltibaseClient; class ConnectionTest static void Main(string[] args) string sconnectionstring = "Server= ;PORT=20091;User=sys;Password=manager"; AltibaseConnection conn = new AltibaseConnection(sConnectionString); try conn.open(); // This connects to the database AltibaseCommand command = new AltibaseCommand("drop table test_goods", conn); query query try command.executenonquery(); // This executes a catch (Exception ex) command.commandtext = "create table test_goods ( gno char(10), gname char(20), location char(9), stock integer, price numeric(10, 2))"; command.executenonquery(); // This executes a command.commandtext = "insert into test_goods values ('A ','IM-300','AC0001',1000,78000)"; command.executenonquery();//this executes a query 40 API User s Manual

41 command.commandtext = "insert into test_goods values ('A ','IM-310','DD0001',100,98000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('B ','NT-H5000','AC0002',780,35800)"; command.executenonquery();//this executes a query command.commandtext = "select * from test_goods"; AltibaseDataReader dr = command.executereader(); Console.WriteLine(" GNO GNAME LOCATION STOCK PRICE "); Console.WriteLine( "=========================================================== ========================"); while (dr.read()) for (int i = 0; i < dr.fieldcount; i++) Console.Write("\t0", dr[i]); // This outputs the retrieved data Console.WriteLine(); catch (Exception ex) Console.WriteLine(ex.ToString()); conn.close(); // This closes the connection to the database using Altibase.Data.AltibaseClient; class ConnectionTest static void Main(string[] args) string sconnectionstring = "DSN= ;PORT_NO=20091;UID=sys;PWD=manager;"; // This is the host IP address and port number of the database server used as the DSN AltibaseConnection conn = new AltibaseConnection(sConnectionString); try conn.open(); // This connects to the database AltibaseCommand command = new AltibaseCommand("drop table test_goods", conn); query try command.executenonquery(); // This executes a catch (Exception ex) command.commandtext = "create table test_goods ( gno char(10), gname char(20), location char(9),.net Data Provider 41

42 query stock integer, price numeric(10, 2))"; command.executenonquery(); // This executes a command.commandtext = "insert into test_goods values ('A ','IM-300','AC0001',1000,78000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('A ','IM-310','DD0001',100,98000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('B ','NT-H5000','AC0002',780,35800)"; command.executenonquery();//this executes a query command.commandtext = "select * from test_goods"; AltibaseDataReader dr = command.executereader(); Console.WriteLine(" GNO GNAME LOCATION STOCK PRICE "); Console.WriteLine( "=========================================================== ========================"); while (dr.read()) for (int i = 0; i < dr.fieldcount; i++) Console.Write("\t0", dr[i]); // This outputs the retrieved data Console.WriteLine(); catch (Exception ex) Console.WriteLine(ex.ToString()); conn.close(); // This closes the connection to the database 실행결과 GNO GNAME LOCATION STOCK PRICE ================================================== A IM-300 AC A IM-310 DD B NT-H5000 AC 벌크복사 AltibaseBulkCopy 를이용해서 bulkcopy_source 테이블에서 bulkcopy_destination 테이블로데이터를복사한다. 42 API User s Manual

43 using System; using System.Data; using Altibase.Data.AltibaseClient; class Program static void Main(string[] args) if (args.length!= 2) Console.WriteLine("\t[NOT PASSED]: Invalid argument"); return; string connectionstring = GetConnectionString(args); using (AltibaseConnection sourceconnection = new AltibaseConnection(connectionString)) sourceconnection.open(); // Perform an initial count on the destination table. AltibaseCommand commandrowcount = new AltibaseCommand( "SELECT COUNT(*) FROM BULKCOPY_DESTINATION;", sourceconnection); long countstart = System.Convert.ToInt32( commandrowcount.executescalar()); Console.WriteLine("Starting row count = 0", countstart); // Get data from the source table as a AltibaseDataReader. AltibaseCommand commandsourcedata = new AltibaseCommand( "SELECT A1, A2, A3, A4 FROM BULKCOPY_SOURCE;", sourceconnection); AltibaseDataReader reader = commandsourcedata.executereader(); // Open the destination connection. In the real world you would // not use AltibaseBulkCopy to move data from one table to the other // in the same database. This is for demonstration purposes only. using (AltibaseConnection destinationconnection = new AltibaseConnection(connectionString)) destinationconnection.open(); // Set up the bulk copy object. // Note that the column positions in the source // data reader match the column positions in // the destination table so there is no need to // map columns. using (AltibaseBulkCopy bulkcopy = new AltibaseBulkCopy(destinationConnection)) bulkcopy.destinationtablename = "BULKCOPY_DESTINATION"; try.net Data Provider 43

44 // Write from the source to the destination. bulkcopy.writetoserver(reader); catch (Exception ex) Console.WriteLine(ex.Message); finally // Close the AltibaseDataReader. The AltibaseBulkCopy // object is automatically closed at the end // of the using block. reader.close(); // Perform a final count on the destination // table to see how many rows were added. long countend = System.Convert.ToInt32( commandrowcount.executescalar()); Console.WriteLine("Ending row count = 0", countend); Console.WriteLine("0 rows were added.", countend - countstart); private static string GetConnectionString(string[] args) // To avoid storing the sourceconnection string in your code, // you can retrieve it from a configuration file. return "Server=" + args[0] + ";" + "PORT=" + args[1] + ";" + "User=sys;Password=manager"; 44 API User s Manual

45 4. XA Interface 이장은 XA 표준을소개하고, 분산트랜잭션의기본개념과 XA 인터페이스를설명한다. ODBC, Embedded SQL, JDBC 프로그램에서글로벌트랜잭션을사용하여 ALTIBASE HDB 에접근하는방법에대해설명한다. 또한 XA 의제약사항및애플리케이션에서발생할수있는문제를다루는법을살펴본다. XA Interface 45

46 XA 개요 XA 구조는 X/Open 에서정한분산트랜잭션 ( 또는글로벌트랜잭션 ) 처리를위한표준모델이다. 분산트랜잭션이란 2 개또는그이상의네트워크상에서의데이터베이스시스템간의트랜잭션으로서글로벌트랜잭션 (Global Transaction) 이라고도한다. 데이터베이스시스템은트랜잭션의자원역할을하고, 트랜잭션매니져 (Transaction Manager, TM) 는이러한자원에관련된모든동작에대하여트랜잭션을생성하고관리한다. 즉다수의데이터베이스서버들이제공하는자원을분산애플리케이션이공유할수있도록해주거나또는글로벌트랜잭션으로처리할수있도록한다. XA 는하나이상의데이터베이스에서트랜잭션을처리하는애플리케이션에유용한구조이다. XA 관련용어 Application (AP) 애플리케이션은필요한트랜잭션과트랜잭션으로구성된작업을정의한다. 애플리케이션은 Embedded SQL 또는 ODBC CLI 로작성할수있다. 글로벌트랜잭션 (Global Transaction) TM 에의해관리되는트랜잭션전체를의미하며, 분산트랜잭션이라고도한다. 휴리스틱완료 (Heuristic Completion) in-doubt 트랜잭션에서어떤원인으로커밋등의다음명령을받지못해서 RM 스스로커밋또는롤백을수행한경우휴리스틱커밋 (Heuristic Commit) 이나휴리스틱롤백 (Heuristic Rollback) 이라고한다. 이러한상태를휴리스틱완료 (Heuristic Completion) 가되었다고한다. 일반적으로네트워크실패또는트랜잭션타임아웃에의해발생한다. In-doubt 트랜잭션 RM 즉 DBMS 에 prepare 된후커밋또는롤백메시지를받기전까지의트랜잭션브랜치을의미한다. 또는 Pending 트랜잭션이라고도한다. Resource Manager (RM) Resource Manager 는 XA 트랜잭션에의해접근되는자원을관리한다. 예를들어관계형데이터베이스, 트랜잭션큐, 또는 46 API User s Manual

47 파일시스템이있을수있다. 트랜잭션브랜치 (Transaction Branch) 이는하위트랜잭션으로글로벌트랜잭션의일부이다. 이는글로벌트랜잭션에참여하는 RM 들중하나에서실행된다. 하나의트랜잭션브랜치는하나의 XID (XA 의트랜잭션아이디 ) 와일대일로대응한다. Transaction Manager (TM) 이는트랜잭션을정의하는 API 를제공한다. 트랜잭션의커밋과롤백을책임지고, 복구를수행한다. TM 은모든 RM 이서로일관성을가지도록 2 단계커밋엔진을가지고있다. Transaction Processing Monitor (TPM) 이는하나이상의 AP 가하나이상의 RM 으로요청하는트랜잭션의흐름을조정한다. RM 은이기종이가능하며네트워크를통해서분산될수있다. TPM 은커밋과롤백작업을조정함으로써분산트랜잭션을완료한다. TPM 에속하는 TM 부분은분산된커밋과롤백작업의타이밍을결정할책임이있다. 즉 TPM 은 2 단계커밋을제어할책임이있다. TM 은분산된커밋과롤백작업을관리하기때문에, 모든 RM 에대해알수있어야하며직접통신할수있어야한다. 이를위해 TM 은 XA 인터페이스를사용한다. ALTIBASE HDB 의경우, TM 은 ALTIBASE HDB 에서제공하는 XA 라이브러리를사용할수있다. TX 인터페이스 AP 는 TX 인터페이스를사용하여 TM 을통해서트랜잭션을제어한다. AP 가직접 XA 인터페이스를사용하지는않는다. AP 는개별트랜잭션브랜치의작업을알지못하고, 애플리케이션쓰레드가직접트랜잭션브랜치작업에참여하지도않는다. 글로벌트랜잭션의브랜치들은 AP 를대신하여 TM 에의해서관리된다. AP 는다만 TM 에게글로벌트랜잭션을커밋또는롤백할것을요청할뿐이다. XA 의구조 아래그림에서보는것처럼, 하나이상의 AP (Application Program), TM (Transaction Manager) 과하나이상의 RM (Resource Manager) 이분산트랜잭션에관여한다. XA Interface 47

48 [ 그림 4-1] XA 구조 AP 가 TX 인터페이스를사용하여 TM 에게분산트랜잭션이시작됐다고알리면, TM 은어떤 RM ( 데이터베이스시스템 ) 이분산트랜잭션의대상인지확인한다. TM 은내부적으로 RM 에서수행할트랜잭션브랜치를위한 XID 를생성하여 XA 인터페이스를호출하여 RM 에게 XID 를전달한다. 각각의 RM (DB 노드 ) 은전송된 XID 에대응하는트랜잭션브랜치를처리하기시작한다. 그리고 TM 으로부터그트랜잭션의종료요청이올때까지는 AP 로부터요청된작업을그 XID 에해당하는글로벌트랜잭션내의작업으로인지하고트랜잭션브랜치에서작업을진행한다. 트랜잭션을종료하려면, AP 는 TX 인터페이스를사용하여 TM 에게분산트랜잭션이종료됐다고알린다. 그러면 TM 은 XA 인터페이스를사용하여분산트랜잭션을진행한 RM 에게커밋또는롤백을명령한다. XA 와 2 단계커밋 ALTIBASE HDB XA Interface 는 2 단계커밋 (2-Phase Commit, 2PC) 을따른다. 2PC 는 Prepare 단계와 Commit 단계로구성된다. 1 단계인 Prepare 에서 TM 은분산트랜잭션에참여하는모든데이터베이스노드들즉 RM 에게커밋의가능성을확인한다. 48 API User s Manual

49 RM 은커밋이가능하다면 Prepare 상태를 TM 에게전달한다. 그러나가능하지않다면 RM 은이를롤백시키기위한상태값을반환한다. 2 단계인 Commit 에서 TM 은 Prepare 의상태를전달받을때까지대기한다. 그리고 Prepare 가정상적으로진행되었다면, 모든 RM 에게커밋명령을보낸다. 그러나하나의 RM 이라도 Prepare 가되지않았다면, 롤백명령을보낸다. xa_switch_t 구조체 XA 인터페이스를지원하는모든 RM 은 RM 에대한정보와각인터페이스의 entry point 를가지는 xa_switch_t 구조체를제공한다. ALTIBASE HDB 는 altibase_xa_switch 라는이름으로제공한다. struct xa_switch_t char name[rmnamesz]; manager */ long flags; specific options */ long version; /* name of resource /* resource manager int (*xa_open_entry)(/*_ char *, int, long _*/); /*xa_open fn pointer*/ int (*xa_close_entry)(/*_ char *, int, long _*/); /*xa_close fn pointer*/ int (*xa_start_entry)(/*_ XID *, int, long _*/); /*xa_start fn pointer*/ int (*xa_end_entry)(/*_ XID *, int, long _*/); /*xa_end fn pointer*/ int (*xa_rollback_entry)(/*_ XID *, int, long _*/); /*xa_rollback fn pointer*/ int (*xa_prepare_entry)(/*_ XID *, int, long _*/); /*xa_prepare fn pointer*/ int (*xa_commit_entry)(/*_ XID *, int, long _*/); /*xa_commit fn pointer*/ int (*xa_recover_entry)(/*_ XID *, long, int, long _*/); /*xa_recover fn pointer*/ int (*xa_forget_entry)(/*_ XID *, int, long _*/); /*xa_forget fn pointer*/ int (*xa_complete_entry)(/*_ int *, int *, int, long _*/); /*xa_complete fn pointer*/ ; XA 라이브러리 ALTIBASE HDB XA 인터페이스를사용하는애플리케이션을연결하기위해서는별도의라이브러리가필요하지않다. ODBC XA Interface 49

50 프로그램을위한 odbccli 라이브러리에포함되어제공하기때문에, 사용자가 XA 관련기능을사용하기위해서는 XA 를사용하는 애플리케이션에 libodbccli.a 라이브러리만링크하면된다. 50 API User s Manual

51 XA 인터페이스 XA 인터페이스는 RM 과 TM 간의상호인터페이스이다. TM 은글로벌트랜잭션을수행하기위해 RM 을제어하는 XA 루틴과 RM 이동적으로 TM 에게요청하는 AX 루틴으로구성된다. Note: ALTIBASE HDB 는동적인등록을지원하지않기때문에, 트랜잭션을시작하기전에 TM 이 RM 으로 xa_start 를호출해야한다. XA 함수 ALTIBASE HDB 는 xa_switch_t 의 ALTIBASE HDB 구현인 altibase_xa_switch 구조체에 XA 관련함수들을제공한다. XA 인터페이스 설명 xa_open Resource Manager 에연결한다. xa_close Resource Manager로부터연결을해제한다. xa_start 새로운트랜잭션브랜치또는기존의트랜잭션브랜치를다시시작하고, 주어진트랜잭션식별자 (XID) 와연계시킨다. xa_end 트랜잭션브랜치로부터분리한다. xa_rollback 주어진 XID와연계된트랜잭션브랜치를롤백한다. xa_prepare 트랜잭션브랜치의커밋을준비한다. xa_commit 트랜잭션브랜치를커밋한다. xa_recover prepare, 휴리스틱커밋또는휴리스틱롤백된트랜잭션의 XID 리스트를보여준다. xa_forget 휴리스틱하게완료된트랜잭션브랜치에대한정보를 RM에서폐기하도록한다. [ 표 4-1] XA 인터페이스 xa_open RM 에접속한다. int xa_open(char *xa_info, int rmid, long flags); xa_info 는 null-terminated 문자열로, 서버정보를포함하며최대길이는 256byte 이다. SQLDriverConnect 의인자와동일한포맷을가지며, 추가적으로 XA_NAME, XA_LOG_DIR 필드가존재한다. 다른필드에대한자세한설명한 CLI User's Manual 의 XA Interface 51

52 SQLDriverConnect 함수를참조하기바란다. NAME=value;NAME=value;NAME=value; 예 ) DSN= ;UID=SYS;PWD=MANAGER ;XA_NAME=conn1 XA 파라미터 XA_NAME XA_LOG_DIR 설명 ALTIBASE HDB Embedded SQL 프로그램에서연결의식별자로사용되는이름이다. ALTIBASE HDB Embedded SQL로애플리케이션을작성할때이값을생략하면, 기본연결을사용하게된다. 만약 XA_NAME 속성에이름을명시했다면, SQL문수행시 AT 절에이이름을사용하면된다. ALTIBASE HDB XA 라이브러리에서발생한에러정보를로깅하는디렉터리를명시한다. 기본값은 ALTIBASE_HOME 환경변수가설정되었을경우 $ALTIBASE_HOME/trc이고, 그렇지않다면현재디렉터리다. [ 표 4-2] XA 인터페이스에추가된필드 rmid 는접속할서버의 ID 를기록하며, 아무값이나쓸수있다. 플래그 (flags) 는다음의값을사용할수있다. TMNOFLAGS xa_close 지정된 RM 과연결을종료한다. int xa_close(char *xa_info, int rmid, long flags); xa_info 는서버에대한정보를기록하는문자열로, 최대길이는 256byte 이다. Note: 연결이이미종료된것에대해 xa_close 가수행되어도, XA_OK 값이반환된다. 플래그 (flags) 는다음의값을쓸수있다. TMNOFLAGS xa_start 트랜잭션브랜치를시작한다. xid 는글로벌트랜잭션에대한식별자이다. int xa_start(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. 52 API User s Manual

53 TMRESUME 이전에 suspend 된트랜잭션브랜치를계속한다. TMNOWAIT xa_start 가차단될경우, 기다리지않고 XA_RETRY 값을반환한다. TMASYNC 비동기모드로트랜잭션브랜치를시작한다 (ALTIBASE HDB 는지원하지않음 ). TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. TMJOIN 존재하는트랜잭션브랜치에연결한다. xa_end 트랜잭션브랜치를끝낸다. int xa_end(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMSUSPEND 해당트랜잭션브랜치를 suspend 상태로변경하고종료한다. 이트랜잭션브랜치는 xa_start 에의해서다시계속될수있다. TMSUCCESS 성공적으로종료했다는것을나타내는것으로 TMSUSPEND 또는 TMFAIL 과같이사용될수없다. TMFAIL 비정상적으로종료했다는것을나타낸다. 이트랜잭션브랜치의상태는 roll-back only 로지정된다. TMSUCCES 또는 TMSUSPEND 와같이사용될수없다. xa_rollback 지정된트랜잭션브랜치에대해서수행한연산을롤백한다. int xa_rollback(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMASYNC xa_rollback 이비동기모드로동작하도록한다 (ALTIBASE HDB 는지원하지않음 ). TMNOFLAGS XA Interface 53

54 다른플래그를지정하지않을경우반드시이값을지정해야 한다. xa_prepare 2 단계커밋프로토콜에서트랜잭션을커밋하거나롤백하기이전에수행한다. int xa_prepare(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMASYNC (ALTIBASE HDB 는지원하지않음 ) TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. 다음의값이리턴될수있다. XA_RDONLY 트랜잭션이 RM (DBMS) 의어떤데이터도변경하지않았을경우에반환된다. RM 에서수행된트랜잭션은커밋이나롤백이필요하지않다. XA_OK 정상적으로수행되었을경우에이값을반환한다. xa_commit 특정트랜잭션브랜치를커밋한다. int xa_commit(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMONEPHASE one phase commit 을수행할경우설정한다. TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. xa_recover RM 에서 prepare 상태로있는트랜잭션브랜치에해당하는 xid 의 목록을얻는다. int xa_recover(xid *xids, long count, int rmid, long flags); 54 API User s Manual

55 리턴값은 xids 에반환되는 xid 의갯수이다. count 매개변수에는 xids 의사이즈를지정한다. 플래그 (flags) 는다음의값을쓸수있다. TMSTARTRSCAN 자세한설명은 XA Specification 문서를참고한다. TMENDRSCAN 자세한설명은 XA Specification 문서를참고한다. TMNOFLAGS 현재커서위치에서시작하여 XID 목록을반환한다. xa_forget 휴리스틱하게 (heuristically) 완료된트랜잭션을 ALTIBASE HDB 서버가관리하지않도록한다. int xa_forget(xid * xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMNOFLAGS 항상이값을지정한다. xa_complete 비동기모드의연산을수행할때해당연산이종료될때까지 대기한다. ALTIBASE HDB 에서는지원하지않으며, 항상오류 메시지를리턴한다. XA Interface 55

56 XA 사용 이절에서는 XA 환경에서 ODBC, Embedded SQL, JDBC 등을 사용하기위한기본적인절차를살펴본다. ODBC/XA 수행순서 1. xa_open 지정한서버에접속한다. 2. SQLAllocHandle ODBC 에연결하기위해서 connection 과 environment 핸들을생성한다. 3. SQLSetConnectAttr XA connection 을 connection 핸들에연결한다. 4. SQLConnect 실제연결은 xa_open 으로연결되었으므로, 이호출에서새로운접속을수행하지는않는다. 다만 SQLConnect 는 ODBC 에서 connection 의내부상태값을변경한다. 이과정을생략하면 DML 연산을수행할수없다. 5. xa_start 특정 XID 에대응하는트랜잭션브랜치를시작한다. 6. SQL 구문실행 SQLPrepare, SQLExecute 등의연산을수행한다. 만일여기에서 commit 문을실행한다면서버는에러메시지를반환한다. 7. xa_end 트랜잭션브랜치를종료한다. 8. xa_prepare 커밋을위해 prepare 를수행한다. 9. xa_commit 트랜잭션을커밋한다. 56 API User s Manual

57 10. SQLDisconnect ODBC 에서 connection 의내부상태를연결되지않은상태로변경한다. 그러나실제 XA 에의해서생성된연결은그대로유지된다. 11. xa_close xa 의연결을종료한다. SQLSetConnectAttr ODBC 애플리케이션이분산트랜잭션을사용할수있도록, SQLSetConnectAttr 을호출하여 XA connection 을 ODBC connection 에연결시킨다. XA 연결하기위해서는 SQLSetConnectAttr 에다음과같은매개변수를준다. SQLRETURN SQLSetConnectAttr (SQLHDBC SQLINTEGER SQLPOINTER SQLINTEGER hdbc, fattr, vparam, slen); fattr = ALTIBASE_XA_RMID hdbc 로지정한연결을 XA 연결로서사용하도록한다. XA 연결에대한자세한정보는 vparam 에다음의구조체포인터를지정하여설정한다. vparam xa_open 으로연결할때사용한 rmid 값을갖는다. rmid 를지정하지않고서버에 XA 연결을하려면다음의매개변수를사용한다. fattr = SQL_ATTR_ENLIST_IN_DTC 또는 SQL_ATTR_ENLIST_IN_XA 지정한 hdbc 연결을마지막 XA 연결과맺는다. Embedded SQL XA_NAME 설정에따른프로그램작성방법 XA 프로그램을작성할때, 커서는한트랜잭션내에서만유효하다. 즉트랜잭션이시작한후에커서를열어야하고, 트랜잭션이커밋또는롤백되기전에커서를닫아야한다. 기본연결을사용한프로그램작성방법 XA Interface 57

58 기본연결을사용려면다음과같이 xa_open 의연결정보를가지는 xa_info 인자에 XA_NAME 필드를지정하지않은문자열을사용해야한다. DSN= ;UID=SYS;PWD=MANAGER 그리고 SQL 구문에서는다음예제처럼 AT 절을사용하지않아도된다. EXEC SQL UPDATE emp SET empno = 5; 한개이상의연결을사용하기위해 XA_NAME 을사용한프로그 램작성방법 Embedded SQL 프로그램에서명시적으로연결의이름을 사용하려면, xa_open 의연결정보를가지는 xa_info 인자에 XA_NAME=conn1 필드가포함된문자열을사용해야한다. 기본연결과한개이상의이름이명시된연결이있는프로그램을 작성하려면, 다음과같이한다. 연결이름이 conn1, conn2 로존재한다면 TM 의환경설정에서 open_string 은다음과같이 XA_NAME 을사용해서연결이름을 명시한다. DSN= ;UID=SYS;PWD=MANAGER;XA_NAME=conn1 DSN= ;UID=SYS;PWD=MANAGER;XA_NAME=conn2 DSN= ;UID=SYS;PWD=MANAGER 애플리케이션서버의서비스함수프로그램에서는아래처럼 AT 절을포함한 Embedded SQL 구문을작성한다. EXEC SQL AT conn1 UPDATE emp SET empno = 5; EXEC SQL AT conn2 UPDATE emp SET empno = 5; EXEC SQL UPDATE emp SET empno = 5; JDBC/XA 수행순서 ALTIBASE HDB 의 JDBC 드라이버가정의하는 XA 관련클래스는다음과같다. Altibase.jdbc.driver.ABXADataSource Altibase.jdbc.driver.ABXAResource Altibase.jdbc.driver.XID 사용자가직접사용하는클래스는 ABXADataSource 이다. 나머지는 JTA 인터페이스클래스를구현한클래스로사용자가직접사용할필요는없다. 58 API User s Manual

59 1. ABXADataSource 객체생성 ABXADataSource xadatasource = new ABXADataSource(); xadatasource.seturl(args[0]); xadatasource.setuser("sys"); xadatasource.setpassword("manager"); 2. XAConnection 객체생성 XAConnection 을 XADataSource 클래스의 getxaconnection 매소드를호출하여생성한다. XAConnection xaconnection = xadatasource.getxaconnection( SYS, MANAGER: ); 3. XAResource 객체생성 XAResource 를 XAConnection 클래스의 getxaresource 매소드를호출하여생성한다. XAResource xaresource = xaconnection.getxaresource(); 4. Connection 객체생성 SQL 을수행할커넥션을 XAConnection 클래스의 getconnection 매소드를호출하여생성한다. Connection conn1 = xaconnection.getconnection(); 5. XAResource 객체를이용하여 XA 함수실행 xa_start, xa_end 등의 XA 함수들은 XAResource 클래스의매소드를사용하여실행된다. xaresource.start(xid, XAResource.TMNOFLAGS); 6. Connection 객체를이용하여 SQL 구문수행 Statement stmt = conn.createstatement(); int cnt = stmt.executeupdate("insert into t1 values (4321)"); XA 트랜잭션제어 ALTIBASE HDB XA 환경에서트랜잭션을제어하는방법에대해설명한다. XA 라이브러리를사용할때는 commit 이나 rollback 구문을사용하여트랜잭션을처리하면안된다. 대신에 AP 는아래표의 TX 인터페이스를사용하여 TM 이트랜잭션을시작하거나종료하도록해야한다.. XA Interface 59

60 TM 은일반적으로 XA 인터페이스를사용해서트랜잭션을제어한다. TX 인터페이스 설명 tx_open RM에 logon한다. tx_close RM에서 logout한다. tx_begin 새로운트랜잭션을시작한다. tx_commit 트랜잭션을커밋한다. tx_rollback 트랜잭션을롤백한다. [ 표 4-3] TX 인터페이스 TX 인터페이스와 XA 인터페이스의호출흐름을살펴보면, 다음 그림과같다. AP tx_open tx_begin TM XA Interface xa_open xa_start tx_commit tx_close xa_end xa_prepare xa_commit xa_close xa_recover xa_commit (xa_rollback, xa_forget) ALTIBASE Native Calls [ 그림 4-2] TX 인터페이스와 XA 인터페이스의호출흐름도 TPM 애플리케이션은애플리케이션클라이언트가애플리케이션서버에서제공하는서비스를요청하는 client/server 구조로되어있다. 서비스란논리적인일의단위로써, ALTIBASE HDB 를 RM 으로사용하는경우에는 SQL 구문의집합으로구성된다고볼수있다. 예제 다음예제들은애플리케이션서버가 TPM 시스템에이미로그온 되었다고가정한예제이다. 애플리케이션서버에서트랜잭션시작하기 60 API User s Manual

61 애플리케이션서버에의해서트랜잭션이시작되는예제이다. Client: tpm_service( SERVICE1 ); Server: SERVICE1() <get service specific data> tx_begin(); EXEC SQL UPDATE...; tpm_service( SERVICE2 ); tx_commit(); <return service status back to the client> 애플리케이션클라이언트에서트랜잭션시작하기 애플리케이션클라이언트에의해서트랜잭션이시작되는예제이다. Client: tx_begin(); tpm_service( SERVICE1 ); tmp_service( SERVICE2 ); tx_commit(); Server: SERVICE1() <get service specific data> EXEC SQL UPDATE...; <return service status back to the client> SERVICE2() <get service specific data> EXEC SQL UPDATE...; <return service status back to the client> 기존애플리케이션을 TPM 애플리케이션으로변경 기존에작성되어있던애플리케이션 (Precompiler 또는 ODBCCLI) 을 ALTIBASE HDB XA 라이브러리를이용한 TPM (Transaction Performance Monitoring) 애플리케이션으로변경하기위해서는다음의절차를따라야한다. 1. 애플리케이션을 서비스 라는프레임워크 (framework) 구조로전환한다. 여기서프레임워크란애플리케이션클라이언트가애플리케이션서버에게 서비스 를요청하는구조를의미한다. 어떤 TPM 은 tx_open, tx_close 함수를사용할것을요구하고, 어떤 TPM 은묵시적으로 logon, logoff 를하기도한다. 2. 일반적인 connect 구문을 TPM 호환성이있는형태로 XA Interface 61

62 변경한다. 예를들어, Embedded SQL 프로그램의경우에는 EXEC SQL CONNECT 구문을 tx_open() 으로변경하고, ODBCCLI 에서는 SQLDriverConnect 구문을 tx_open 과 SQLConnect 로변경한다. 실제연결은 tx_open 으로연결되었으나, ODBC 내부에서 XA 연결과맺어주는 SQLConnect 과정을생략하면 DML 연산을수행할수없다. 자세한설명은 ODBC/XA 수행순서를참조한다. 3. 일반적인 disconnect 구문을 TPM 호환성이있는형태로변경한다. Embedded SQL 프로그램의 EXEC SQL DISCONNECT 또는 ODBCCLI 의 SQLDisconnect 구문을 tx_close() 로변경한다. 4. Commit, rollback 구문을 TPM 호환성이있는형태로변경한다. 예를들어 EXEC SQL COMMIT/ROLLBACK (Embedded SQL 프로그램 ), SQLEndTran(ODBCCLI) 을 tx_commit/tx_rollback 으로변경하고, tx_begin() 을호출하여트랜잭션을시작하도록한다. 5. 애플리케이션은트랜잭션을종료 (end) 하기전에 fetch 상태를리셋해야한다. 커서를사용해서 fetch 를했으면트랜잭션을종료하기전에 CLOSE RELEASE 를사용해서커서를닫고자원을해제해야한다. ALTIBASE HDB 구문 CONNECT 암묵적인트랜잭션시작 SQL COMMIT ROLLBACK DISCONNECT SET TRANSACTION READ ONLY TPM 함수 tx_open tx_begin SERVICE에서 SQL구문수행 tx_commit tx_rollback tx_close 허용하지않음 62 API User s Manual

63 XA 사용시제약사항 XA 를사용할때다음과같은몇가지제약사항이존재한다. SQL 사용시제약사항 트랜잭션브랜치관련제약사항 연계이주비지원 비동기호출비지원 동적등록비지원 서버종료 SQL 사용시제약사항 롤백과커밋 TM 이글로벌트랜잭션을관리하기때문에 XA 애플리케이션에서는 COMMIT 또는 ROLLBACK 구문같은트랜잭션제어구문을사용해서글로벌트랜잭션을제어해서는안된다. 글로벌트랜잭션을종료하기위해서는 tx_commit 이나 tx_rollback 을사용해야한다. Precompiler 애플리케이션에서 EXEC SQL ROLLBACK 이나 EXEC SQL COMMIT 구문을사용할수없다. ODBCCLI 애플리케이션에서도 SQLEndTran 을사용해서커밋이나롤백을수행하면안된다. DDL 구문 AUTOCOMMIT 세션프로퍼티 DDL SQL 구문은 ALTIBASE HDB 서버내부적으로커밋을하기 때문에 ALTIBASE HDB XA 애플리케이션에서사용할수없다. 글로벌트랜잭션은 non-autocommit 모드에서수행되기때문에, ALTER SESSION SET AUTOCOMMIT = TRUE 구문을사용하여 AUTOCOMMIT 프로퍼티를변경할수없다. SET TRANSACTION XA 애플리케이션에서 SET TRANSACTION READ ONLY READ WRITE ISOLATION LEVEL... 구문을사용하면안된다. XA Interface 63

64 EXEC SQL 구문으로연결또는해제 Embedded SQL 프로그램에서연결또는연결해제를위해서 EXEC SQL CONNECT, EXEC SQL DISCONNECT 구문을 사용해서는안된다. 트랜잭션브랜치관련제약사항 하나의글로벌트랜잭션에는다수의애플리케이션쓰레드들이참여하는데, 이들쓰레드는서로 tightly-coupled 또는 looselycoupled 관계일수있다. Tightly-coupled 관계는자원을공유하는쓰레드의관계이다. 이들쓰레드들은하나의개체로처리된다. Tightly-coupled 쓰레드에서 RM 은트랜잭션브랜치가자원의데드락이발생하지않도록해야한다. 그러나 Loosely-coupled 관계에서는이런보장을하지않는다. RM 에서는 loosely-coupled 관계의트랜잭션브랜치를서로다른글로벌트랜잭션처럼다룬다. XID 와쓰레드의관계 TM 이 XID 의 branch qualifier 를새로운값으로생성하여 RM 에전달한다면, 이쓰레드는같은브랜치안의다른쓰레드들과 loosely-coupled 관계가된다. RM 은이쓰레드를별도의글로벌트랜잭션처럼처리한다. 그리고만약 TM 이 XID 의 branch qualifier 를재사용한다면, 이쓰레드는해당브랜치를공유하는다른쓰레드들과 tightly-coupled 한관계가된다. RM 은이러한 tightly-coupled 쓰레드들을하나의개체처럼다뤄야하고, 이들 tightly-coupled 쓰레드간에자원데드락이발생하지않도록보장해야한다. 연계이주비지원 ALTIBASE HDB 는연계이주 (Association Migration, TM 이 suspended 브랜치를다른브랜치에서연계하여다시시작하는것 ) 를지원하지않는다. 64 API User s Manual

65 비동기호출비지원 ALTIBASE HDB 는비동기 XA 호출을지원하지않는다. 동적인등록비지원 ALTIBASE HDB 서버는동적등록을지원하지않고, 정적등록만지원한다. 동적등록 (Dynamic Registration) 이란 RM 이글로벌트랜잭션을시작하기전에자신이 TM 에등록하는것을말한다. 정적등록에서는 TM 이 xa_start 를꼭호출하여트랜잭션시작을 RM 에알려야한다. 서버종료 Shutdown abort 를사용한 ALTIBASE HDB 종료또는비정상종료시 prepared 트랜잭션이존재하였다면, 종료후서버재구동시이들트랜잭션이 recovery 과정을거치게되므로구동후에 xa_recover 를통해서이들트랜잭션을처리할수있다. Shutdown immediate 또는 shutdown normal 로서버를종료할때 prepared 트랜잭션이존재하면, 정상종료를명령했더라도 ALTIBASE HDB 는 abort 로종료시킬때와같은방식으로서버를종료한다. 따라서재구동시 recovery 과정을거쳐이들트랜잭션이그대로유지되며 xa_recover 를통해서이들트랜잭션을처리할수있다. 그러나 prepared 트랜잭션이존재하지않을경우에는정상종료하며, 다음구동시 recovery 과정을거치지않게된다. XA Interface 65

66 JDBC 분산트랜잭션 분산트랜잭션을구현한 ALTIBASE HDB JDBC 는 JDBC 2.0 extension API 에서 Connection Pooling 기능과분산트랜잭션을위한 Open XA 표준을준수한다. XA 표준에부합하는분산트랜잭션기능을구현한모든클래스는 ALTIBASE HDB JDBC 드라이버패키지에기본으로포함되어제공된다. JTA(Java Transaction API) 와애플리케이션서버 분산트랜잭션에서애플리케이션이애플리케이션서버를통해서 트랜잭션을수행하는과정을그림과같이설명한다. Application Application Server Transaction Manager Resource Adapter [ 그림 4-3] 분산트랜잭션과정 애플리케이션서버는각각의자원들과연결될수있는 XAConnection 을지원한다. 애플리케이션은애플리케이션서버에접속해서 Connection 을얻어쿼리를수행한다. 그리고애플리케이션서버는 TM (Transaction Manager) 을통해트랜잭션을관리한다. 이때 TM 은 DBMS 벤더에서제공하는 Resource Adapter 를이용해서자원에접근할수있다. Resource 가 DBMS 일경우, Resource Adapter 는 JDBC 드라이버패키지가될수있다. Resource Adapter 는 ResourceFactory, Transactional Resource(XAConnection), Connection, XAResource 등 4 가지종류의클래스로구성된다. ResourceFactory 는 XAConnection 을생성하며, JDBC 스펙에서 XADataSource 가여기에해당한다. 애플리케이션서버는 XADataSource 에서가져온 XAConnection(DBMS 로연결 ) 을얻는다. 그리고 XAConnection 은애플리케이션에서사용할 connection(java.sql.connection) 인스턴스와 TM 에서사용할 XAResource 인스턴스를얻어온다. 66 API User s Manual

67 XA 컴포넌트 XADataSource Interface JDBC 2.0 Optional 패키지의표준 XA 인터페이스들과이를 구현한 ALTIBASE 클래스를설명한다. javax.sql.xadatasource 는 XA Connection 의 factory 기능을 갖는인터페이스이다. 이인터페이스의 getxaconnection 메소드가 XA Connection 인스턴스를반환한다. public interface XADataSource XAConnection getxaconnection() throws SQLException; XAConnection getxaconnection(string user, String password) throws SQLException;... Altibase.jdbc.driver.ABXADataSource 는 ALTIBASE HDB 에서제공한 JDBC 드라이버에존재하는 XADataSource 인터페이스를구현한클래스이다. 동시에 Altibase.jdbc.driver.ABConnectionPoolDataSource 를상속한클래스이다. ABConnectionPoolDataSource 클래스는 Altibase.jdbc.driver.DataSource 를상속한다. 따라서, ABXADataSource 클래스는 DataSource 와 ABConnectionPoolDataSource 의 connection properties 를모두포함한다. DataSource <Interface> XADataSource ABConnectionPoolDataSource ABXADataSource [ 그림 4-4] ABXADataSource 클래스 ABXADataSource 클래스의 getxaconnection 메소드는 XAConnection 타입의인스턴스를반환한다. 이인스턴스는실제로 ABPooledConnection 클래스의인스턴스로서 XA Interface 67

68 ABPooledConnection 클래스는 XAConnection 인터페이스를구현하고있다. XA data source 는 Java Naming Directory 와 Interface(JNDI) 에등록및사용할수있다. XAConnection Interface XAConnection 인터페이스는 PooledConnection 인터페이스의 하위인터페이스이다. getconnection, close, addconnectioneventlistener, removeconnectioneventlistener 메소드를포함한다. public interface XAConnection extends PooledConnection javax.jta.xa.xaresource getxaresource() throws SQLException; XAConnection 의인스턴스는데이터베이스와물리적으로연결하고있다. 또한 XAConnection 인스턴스를통해분산트랜잭션을관리하는데사용되는 XAResource 를얻을수있다. ALTIBASE HDB JDBC driver 에서는 Altibase.jdbc.driver.ABPooledConnection 클래스의인스턴스가실질적인 XAConnection 타입의인스턴스가된다. ABPooledConnection 클래스의 getxaresource 메소드는 ABXAResource 인스턴스를반환하고, getconnection 메소드는 ABConnection 인스턴스를반환한다. <Interface> PooledConnection <Interface> XAConnection ABPooled Connection [ 그림 4-5] ABPooledConnection 클래스 68 API User s Manual

69 getconnection 메소드를통해반환되는 ABConnection 인스턴스는데이터베이스와의물리적인연결에대한임시핸들이고, 이 Connection 은글로벌트랜잭션에참여되기까지는일반적인 Connection 처럼동작한다. 글로벌트랜잭션에참여되는순간에 auto-commit 상태는 false 가되며, 글로벌트랜잭션이끝난후에 auto-commit 상태는글로벌트랜잭션이시작되기이전상태로돌아간다. XAConnection 의 getconnection 메소드가호출될때마다새로운 Connection 인스턴스를반환하는데, 동일한 XAConnection 인스턴스에의해반환되어이전에존재하던 Connection 인스턴스는 close 된다. 그럼에도불구하고, 새로운 Connection 이오픈되기전에이전의 Connection 은명시적으로 close 하기를권장한다. XAConnection 인스턴스의 close 메소드가호출되면데이터베이스로의물리적인연결이끊어진다. XAResource Interface TM 은모든트랜잭션브랜치들을조정하기위해서 ABXAResource 인스턴스를사용한다. Altibse.jdbc.driver.ABXAResource 타입의인스턴스는 javax.transaction.xa.xaresource 인터페이스를구현하는클래스의인스턴스이다. <Interface> javax.transaction.xa.xaresource ABXAResource [ 그림 4-6] ABXAResource 클래스 Altibase JDBC driver 는 ABPooledConnection 클래스의 getxaresource 메소드를호출할때마다 ABXAResource 인스턴스를생성하여반환하고, Altibase JDBC driver ABXAResource 인스턴스와 connection 인스턴스를연결시킨다. 트랜잭션브랜치는이 connection 으로동작한다. ABXAResource 클래스는분산된트랜잭션의트랜잭션브랜치를조정하기위해몇개의메소드를갖고있다. XA Interface 69

70 TM 은애플리케이션서버와같은중간층의컴포넌트로부터 ABXAResource 인스턴스를받으며, 아래의메소드를갖고있다. void start(xid xid, int flags) void end(xid xid, int flags) int prepare(xid xid) void commit(xid xid, boolean onephase) void rollback(xid xid) public void forget(xid xid) public Xid[] recover(int flag) 자세한내용은 java API Spec. 의 javax.transaction.xa.xaresource 를참조하기바란다. Xid interface TM 은트랜잭션 ID 인스턴스를생성하고, 분산트랜잭션의브랜치를관리하는데이를사용한다. 각각의트랜잭션브랜치는유일한트랜잭션 ID 를부여받으며, 다음의정보를포함한다. Format identifier Global transaction identifier Branch qualifier Altibase 는 javax.transaction.xa.xid 인터페이스를구현한클래스가 Altibase.jdbc.driver 패키지에 XID 클래스로존재한다. Note: ABXAResource 호출에는 Altibase.jdbc.driver.XID 를반드시사용할필요는없다. 여기에는 javax.transaction.xa.xid 인터페이스를구현한어떤클래스도사용될수있다. 에러처리 XA 관련메소드는에러가발생할때, ABXAException 을 throw 한다. ABXAException 클래스는 javax.transaction.xa.xaexception 클래스의하위클래스이다. 애플리케이션서버에서 XA 설정 WebLogic 에서 XA 설정 1. 웹로직콘솔에서 Services -> JDBC -> Connection Pools 에서 Configure a new JDBC Connection Pool 을선택한후 JDBC 연결정보를입력한다. ([ 그림 6-6]JDBC 연결정보입력참조 ) 70 API User s Manual

71 구분 NON-XA XA URL jdbc:altibase://[ip]:[port]/dbnam e jdbc:altibase://[ip]:[port]/dbnam e Driver Classname Altibase.jdbc.driver.AltibaseDriv er Altibase.jdbc.driver.ABXADataS ource Properties User=[username] User=[username] [ 표 4-4] NON-XA와 XA의연결정보비교 [ 그림 4-7] JDBC 연결정보입력 2. 생성된 Connection Pool 을이용해서 DataSource 를만든다. Services->JDBC->Data Sources 에서 Configure a new JDBC Data Source 를선택한다. Name 과 JNDI Name 을입력하고 Honor Global Transactions 에체크한다. 다음페이지에서 PoolName 에앞서만든 Pool 의이름을입력한다. (weblogic 8.1) ([ 그림 6-7] 데이터소스생성참조 ) Note: weblogic8.1 이전버전에서는 Services->JDBC->XA Data Sources 에서새로운 DataSource 를생성한다. XA Interface 71

72 [ 그림 4-8] 데이터소스생성 Weblogic 애플리케이션예제 JEUS 에서 XA 설정 // step 1. JNDI Lookup and get UserTransaction Object Context ctx = null; Hashtable env = new Hashtable(); // Parameter for weblogic env.put(context.initial_context_factory, "weblogic.jndi.wlinitialcontextfactory"); env.put(context.provider_url,"t3://localhost:7001"); env.put(context.security_principal,"weblogic"); env.put(context.security_credentials,"weblogic"); ctx = new InitialContext(env); System.out.println("Context Created :"+ctx); // step 2. get User Transaction Object UserTransaction tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransa ction"); // step 3 start Transaction System.out.println("Start Transaction :"+tx); tx.begin(); try // step 4. doing query // step 4-1. get Datasource DataSource xads1 = (DataSource)ctx.lookup("altiTXDS"); 제우스에서 JDBC 데이터소스를생성하기위한기본설정을한다. 72 API User s Manual

73 1. JEUS 매니저리소스 ->JDBC 에서새 JDBC 데이터소스생성을 선택한다. 2. 기본설정창이나타나면다음의정보를입력한다. DBMS : Other 가능한데이터소스들 : Other DataSource Data Source Class Name: Altibase.jdbc.driver.ABXADataSource Data Source Type : XADataSource 3. Database Name, Port Number, Server Name, User, Password 에는해당하는값을입력한다. [ 그림 4-9] 제우스에서데이터소스설정하기 JEUS 애플리케이션예제 // step 1. JNDI Lookup and get UserTransaction Object Context ctx = null; Hashtable env = new Hashtable(); // Parameter for weblogic XA Interface 73

74 env.put(context.initial_context_factory, "jeus.jndi.jnscontextfactory"); env.put(context.url_pkg_prefixes, "jeus.jndi.jns.url"); env.put(context.provider_url, " "); env.put(context.security_principal,"jeus"); env.put(context.security_credentials,"jeus"); ctx = new InitialContext(env); System.out.println("Context Created :"+ctx); // step 2. get User Transaction Object UserTransaction tx = (UserTransaction)ctx.lookup("java:comp/UserTransaction"); // step 3 start Transaction System.out.println("Start Transaction :"+tx); tx.begin(); try // step 4. doing query // step 4-1. get Datasource DataSource xads1 = (DataSource)ctx.lookup("altiTXDS"); 예제 ALTIBASE HDB XA 기능을사용해서분산트랜잭션을어떻게구현하는지예제를통해살펴본다. 이예제는아래의순서대로실행한다. 1. Start transaction branch #1. 2. Start transaction branch #2. 3. Execute DML operations on branch #1. 4. Execute DML operations on branch #2. 5. End transaction branch #1. 6. End transaction branch #2. 7. Prepare branch #1. 8. Prepare branch #2. 9. Commit branch # Commit branch #2. import java.sql.*; import javax.sql.*; 74 API User s Manual

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

Microsoft PowerPoint - 18-DataSource.ppt

Microsoft PowerPoint - 18-DataSource.ppt 18 장 : JDBC DataSource DataSource JDBC 2.0의 javax.sql 패키지에포함되어도입됨 DataSource 인터페이스는데이터베이스커넥션을만들거나사용하는데좀더유연한아키텍처를제공하기위해도입됨 DataSource를이용할경우, 클라이언트코드는한줄도바꾸지않고서도다른데이터베이스에접속할수있도록해줌 즉 DataSource 는커넥션상세사항들을캡슐화

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide FileMaker 13 5 5 5 6 6 6 7 7 8 8 8 8 9 9 10 10 11 11 12 12 12 12 12 12 13 13 14 14 16 16 18 4 19 19 20 20 21 21 21 23 23 23 23 25 26 26 26 26 27 28 28 28 28 29 31 31 32 33 33 33 33 34 34 35 35 35 36 1

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

제목을 입력하세요.

제목을 입력하세요. 1. 4 1.1. SQLGate for Oracle? 4 1.2. 4 1.3. 5 1.4. 7 2. SQLGate for Oracle 9 2.1. 9 2.2. 10 2.3. 10 2.4. 13 3. SQLGate for Oracle 15 3.1. Connection 15 Connect 15 Multi Connect 17 Disconnect 18 3.2. Query

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

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

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

More information

단계

단계 TIBERO-WAS 연동 Guide 본문서에서는 Tibero RDBMS 에서제공하는 JDBC 통한 JEUS, WEBLOGIC 등다양한 WAS (Web Application Server) 제품과의연동방법을알아본다. Contents 1. Connection Pool 방식... 2 2. JEUS 연동... 3 2.1. JEUSMain.xml 설정 (Thin 방식

More information

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide FileMaker 14 5 5 5 5 6 6 6 7 7 7 8 8 8 9 9 10 10 11 11 12 12 12 12 12 13 13 14 15 16 17 18 18 19 19 20 20 20 21 21 21 22 22 22 22 23 24 24 24 24 25 27 27 28 29 29 29 29 30 30 31 31 31 32 1 1 1 1 1 1 1

More information

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2 5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,

More information

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++, Level 1은객관식사지선다형으로출제예정 1. 다음은 POST(Post of Sales Terminal) 시스템의한콜레보레이션다이어그램이다. POST 객체의 enteritem(upc, qty) 와 Sale 객체의 makellineitem(spec,qty) 를 Java 또는 C ++, C # 언어로구현하시오. 각메소드구현과관련하여각객체내에필요한선언이있으면선언하시오.

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx (보험TM) 소개서 2015.12 대표전화 : 070 ) 7405 1700 팩스 : 02 ) 6012 1784 홈 페이지 : http://www.itfact.co.kr 목 차 01. Framework 02. Application 03. 회사 소개 01. Framework 1) Architecture Server Framework Client Framework

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

<B3EDB4DC28B1E8BCAEC7F6292E687770> 1) 초고를읽고소중한조언을주신여러분들게감사드린다. 소중한조언들에도불구하고이글이포함하는오류는전적으로저자개인의것임을밝혀둔다. 2) 대표적인학자가 Asia's Next Giant: South Korea and Late Industrialization, 1990 을저술한 MIT 의 A. Amsden 교수이다. - 1 - - 2 - 3) 계량방법론은회귀분석 (regression)

More information

No Slide Title

No Slide Title Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정 W2K8 R2 RemoteApp 및 Web Access 설치 및 구성 Step-By-Step 가이드 Microsoft Korea 이 동 철 부장 2009. 10 페이지 1 / 60 목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host)

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

개발문서 Oracle - Clob

개발문서 Oracle - Clob 개발문서 ORACLE CLOB 2008.6.9 ( 주 ) 아이캔매니지먼트 개발팀황순규 0. clob개요 1. lob과 long의비교와 clob와 blob 2. 테이블생성쿼리 ( 차이점-추가사항 ) 3. select 쿼리 4. insert 쿼리및 jdbc프로그래밍 5. update 쿼리및 jdbc프로그래밍 (4, 5). putclobdata() 클래스 6. select

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

C++Builder ADO Programming (5) - ADO Transaction, Errors

C++Builder ADO Programming (5) - ADO Transaction, Errors C++Builder ADO Programming (5) - ADO Transaction, Errors Collections, Connection Events 지난번 강의에서 우리의 레밍은 TADOConnection의 여러 가지 속성들과 메소드들을 익히고 그것을 사용해서 SQL 문도 실행시키고 저장 프로시저도 호출해 보았다. 그것은 그것 나름대로의 한 방법이며

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

User Guide

User Guide HP ThinUpdate 관리자 설명서 Copyright 2016 HP Development Company, L.P. Windows는 미국 및/또는 기타 국가에서 Microsoft Corporation의 등록 상표 또는 상표입 니다. 기밀 컴퓨터 소프트웨어. 소유, 사용 또는 복사 에 필요한 유효한 사용권을 HP로부터 취득했 습니다. FAR 12.211 및

More information

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770> 개 요 홈페이지 해킹 현황 및 사례 홈페이지 개발시 보안 취약점 및 대책 주요 애플리케이션 보안 대책 결 론 참고자료 [부록1] 개발 언어별 로그인 인증 프로세스 예제 [부록2] 대규모 홈페이지 변조 예방을 위한 권고(안) [부록3] 개인정보의 기술적 관리적 보호조치 기준(안) [부록4] 웹 보안관련 주요 사이트 리스트 7000 6,478 6000 5000

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

untitled

untitled Memory leak Resource 力 金 3-tier 見 Out of Memory( 不 ) Memory leak( 漏 ) 狀 Application Server Crash 理 Server 狀 Crash 類 JVM 說 例 行說 說 Memory leak Resource Out of Memory Memory leak Out of Memory 不論 Java heap

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수 사용 설명서 TeraStation Pro II TS-HTGL/R5 패키지 내용물: 본체 (TeraStation) 이더넷 케이블 전원 케이블 TeraNavigator 설치 CD 사용 설명서 (이 설명서) 제품 보증서 www.buffalotech.com 소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를

More information

목 차 1. 드라이버 설치...3 1.1 설치환경...3 1.2 드라이버 설치 시 주의사항...3 1.3 USB 드라이버 파일...3 1.4 Windows XP에서 설치...4 1.5 Windows Vista / Windows 7에서 설치...7 1.6 Windows

목 차 1. 드라이버 설치...3 1.1 설치환경...3 1.2 드라이버 설치 시 주의사항...3 1.3 USB 드라이버 파일...3 1.4 Windows XP에서 설치...4 1.5 Windows Vista / Windows 7에서 설치...7 1.6 Windows 삼성SDS 하이패스 USB 드라이버 설치 매뉴얼 삼성SDS(주) 목 차 1. 드라이버 설치...3 1.1 설치환경...3 1.2 드라이버 설치 시 주의사항...3 1.3 USB 드라이버 파일...3 1.4 Windows XP에서 설치...4 1.5 Windows Vista / Windows 7에서 설치...7 1.6 Windows 8에서 설치...9 2. 드라이버

More information

Cisco FirePOWER 호환성 가이드

Cisco FirePOWER 호환성 가이드 Cisco 호환성가이드 Cisco 호환성 이문서에서는 Cisco 소프트웨어와하드웨어의호환성및요건을다룹니다. 추가 릴리스또는제품정보는다음을참조하십시오. 설명서로드맵 : http://www.cisco.com/c/en/us/td/docs/security/firesight/ roadmap/firesight-roadmap.html Cisco ASA 호환성가이드 : http://www.cisco.com/c/en/us/td/docs/security/asa/compatibility/

More information

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1) [ Version 1.3 ] Access Point,. Access Point IP 10.0.0.1, Subnet Mask 255.255.255.224, DHCP Client. DHCP Server IP IP,, IP 10.0.0.X. (Tip: Auto Sensing Straight, Cross-over.) step 1]. step 2] LAN. step

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

LG-LU6200_ICS_UG_V1.0_ indd

LG-LU6200_ICS_UG_V1.0_ indd 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

More information

最即時的Sybase ASE Server資料庫診斷工具

最即時的Sybase ASE Server資料庫診斷工具 TOAD 9.5 Toad Oracle 料 SQL 料 行 理 SQLprofile Quest Software 了 Oracle -Toad Tools of Oracle Application Developers Toad 了 DBA DBA 理 易 度 Toad 料 SQL PL/SQL Toad Oracle PL/SQL Toad Schema Browser Schema Browser

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

예제소스는  에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US A.4 마당서점데이터베이스생성 1 마당서점의데이터베이스 Madang을생성하기위해윈도우의 [ 시작 ]-[ 모든프로그램 ]- [Microsoft SQL Server 2012]-[SQL Server Management Studio] 를선택한다. 인증을 [Windows 인증 ] 으로선택한후 < 연결 > 을클릭한다. 2 1 3 서버이름 MADANG_DB\SQLEXPRESS

More information

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형 바에 제네릭스(generics)를 도입하기 위한 연구는 이미 8년 전인 1996년부터라고 한다. 실제로 자바에 제네릭스를 도입하 는 몇 가지 방안들이 논문으로 나오기 시작한 것이 1998년 초임을 감 안하면 무려 8년이 지난 후에야 자바 5.0에 전격 채택되었다는 것은 이것이 얼마나 어려운 일이었나 하는 것을 보여준다. 자바의 스펙을 결정하는 표준화 절차인

More information

OZ-LMS TM OZ-LMS 2008 OZ-LMS 2006 OZ-LMS Lite Best IT Serviece Provider OZNET KOREA Management Philosophy & Vision Introduction OZNETKOREA IT Mission Core Values KH IT ERP Web Solution IT SW 2000 4 3 508-2

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

자바 프로그래밍

자바 프로그래밍 5 (kkman@mail.sangji.ac.kr) (Class), (template) (Object) public, final, abstract [modifier] class ClassName { // // (, ) Class Circle { int radius, color ; int x, y ; float getarea() { return 3.14159

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Contents Test Lab 홖경... 3 Windows 2008 R2 서버를도메인멤버서버로추가... 4 기존 Windows 2003 AD 홖경에서 Windows 2008 R2 AD 홖경으로업그레이드를위한사젂작업 7 기존 Windows 2003 AD의스키마확장...

Contents Test Lab 홖경... 3 Windows 2008 R2 서버를도메인멤버서버로추가... 4 기존 Windows 2003 AD 홖경에서 Windows 2008 R2 AD 홖경으로업그레이드를위한사젂작업 7 기존 Windows 2003 AD의스키마확장... Active Directory Upgrade from W2K3 to W2K8 R2 5/10/2010 Microsoft Dong Chul Lee Contents Test Lab 홖경... 3 Windows 2008 R2 서버를도메인멤버서버로추가... 4 기존 Windows 2003 AD 홖경에서 Windows 2008 R2 AD 홖경으로업그레이드를위한사젂작업

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Install the PDI on CentOS 2013.04 G L O B E P O I N T 1 Ⅰ linux 구성 II Pentaho Install 2013, Globepoint Inc. All Rights Reserved. 2 I. Linux 구성 2013, Globepoint Inc. All Rights Reserved. 3 IP 설정 1. 설정파일

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Windows 네트워크 사용 설명서

Windows 네트워크 사용 설명서 Windows 네트워크 사용 설명서 (Wireless Manager mobile edition 5.5) 그림의 예로 사용된 프로젝터는 PT-FW300NTEA 입니다. 한국어 TQBH0205-5 (K) 목차 소프트웨어 라이센스 계약 3 무선 연결 사용 시 참고 사항 4 보안 관련 참고 사항 6 소프트웨어 요구 사항 12 시스템 요구 사항 12 Wireless

More information

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드] 리눅스 설치 Vmware를 이용한 Fedora Core 8 설치 소프트웨어실습 1 Contents 가상 머신 실습 환경 구축 Fedora Core 8 설치 가상 머신 가상 머신 가상 머신의 개념 VMware의 설치 VMware : 가상 머신 생성 VMware의 특징 실습 환경 구축 실습 환경 구축 Fedora Core 8 설치 가상 머신의 개념 가상 머신 (Virtual

More information

Assign an IP Address and Access the Video Stream - Installation Guide

Assign an IP Address and Access the Video Stream - Installation Guide 설치 안내서 IP 주소 할당 및 비디오 스트림에 액세스 책임 본 문서는 최대한 주의를 기울여 작성되었습니다. 잘못되거나 누락된 정보가 있는 경우 엑시스 지사로 알려 주시기 바랍니다. Axis Communications AB는 기술적 또는 인쇄상의 오류에 대해 책 임을 지지 않으며 사전 통지 없이 제품 및 설명서를 변경할 수 있습니다. Axis Communications

More information

MF Driver Installation Guide

MF Driver Installation Guide Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인

More information

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리 ArcGIS for Desktop 10.4 Single Use 설치가이드 Software: ArcGIS for Desktop 10.4 Platforms: Windows 10, 8.1, 7, Server 2012, Server 2008 ArcGIS for Desktop 10.4 시스템 요구사항 1. 지원 플랫폼 운영체제 최소 OS 버전 최대 OS 버전 Windows

More information

UNIST_교원 홈페이지 관리자_Manual_V1.0

UNIST_교원 홈페이지 관리자_Manual_V1.0 Manual created by metapresso V 1.0 3Fl, Dongin Bldg, 246-3 Nonhyun-dong, Kangnam-gu, Seoul, Korea, 135-889 Tel: (02)518-7770 / Fax: (02)547-7739 / Mail: contact@metabrain.com / http://www.metabrain.com

More information

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph 인터그래프코리아(주)뉴스레터 통권 제76회 비매품 News Letters Information Systems for the plant Lifecycle Proccess Power & Marine Intergraph 2008 Contents Intergraph 2008 SmartPlant Materials Customer Status 인터그래프(주) 파트너사

More information

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사) Java Program Performance Tuning ( ) n (Primes0) static List primes(int n) { List primes = new ArrayList(n); outer: for (int candidate = 2; n > 0; candidate++) { Iterator iter = primes.iterator(); while

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

Citrix Workload Balancing 2.1 설치 가이드

Citrix Workload Balancing 2.1 설치 가이드 Citrix Workload Balancing 2.1 설치 가이드 2011-7 펴냄 버전 1.0 Citrix Workload Balancing 2.1 설치 가이드 Copyright 2011 Citrix 판권 소유. 버전: Workload Balancing 2.1 Citrix, Inc. 851 West Cypress Creek Road Fort Lauderdale,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

UDP Flooding Attack 공격과 방어

UDP Flooding Attack 공격과 방어 황 교 국 (fullc0de@gmail.com) SK Infosec Co., Inc MSS Biz. Security Center Table of Contents 1. 소개...3 2. 공격 관련 Protocols Overview...3 2.1. UDP Protocol...3 2.2. ICMP Protocol...4 3. UDP Flood Test Environment...5

More information

A Tour of Java V

A Tour of Java V A Tour of Java V Sungjoo Ha April 3rd, 2015 Sungjoo Ha 1 / 28 Review First principle 문제가생기면침착하게영어로구글에서찾아본다. 타입은가능한값의집합과연산의집합을정의한다. 기본형이아니라면이름표가메모리에달라붙는다. 클래스로사용자정의타입을만든다. 프로그래밍은복잡도관리가중요하다. OOP 는객체가서로메시지를주고받는방식으로프로그램을구성해서복잡도관리를꾀한다.

More information

휠세미나3 ver0.4

휠세미나3 ver0.4 andromeda@sparcs:/$ ls -al dev/sda* brw-rw---- 1 root disk 8, 0 2014-06-09 18:43 dev/sda brw-rw---- 1 root disk 8, 1 2014-06-09 18:43 dev/sda1 brw-rw---- 1 root disk 8, 2 2014-06-09 18:43 dev/sda2 andromeda@sparcs:/$

More information

비긴쿡-자바 00앞부속

비긴쿡-자바 00앞부속 IT COOKBOOK 14 Java P r e f a c e Stay HungryStay Foolish 3D 15 C 3 16 Stay HungryStay Foolish CEO 2005 L e c t u r e S c h e d u l e 1 14 PPT API C A b o u t T h i s B o o k IT CookBook for Beginner Chapter

More information

10X56_NWG_KOR.indd

10X56_NWG_KOR.indd 디지털 프로젝터 X56 네트워크 가이드 이 제품을 구입해 주셔서 감사합니다. 본 설명서는 네트워크 기능 만을 설명하기 위한 것입니다. 본 제품을 올바르게 사 용하려면 이 취급절명저와 본 제품의 다른 취급절명저를 참조하시기 바랍니다. 중요한 주의사항 이 제품을 사용하기 전에 먼저 이 제품에 대한 모든 설명서를 잘 읽어 보십시오. 읽은 뒤에는 나중에 필요할 때

More information

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공 메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1 목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper

More information

PHP & ASP

PHP & ASP 단어장프로젝트 프로젝트2 단어장 select * from address where address like '% 경기도 %' td,li,input{font-size:9pt}

More information

PowerPoint Template

PowerPoint Template 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent 3

More information

- 다음은 Statement 객체를사용해서삽입 (insert) 작업의예 String sql = "insert into member(code, name, id, pwd, age) values ("; int id = 10; sql = sql + id +, ;// 항목사이에

- 다음은 Statement 객체를사용해서삽입 (insert) 작업의예 String sql = insert into member(code, name, id, pwd, age) values (; int id = 10; sql = sql + id +, ;// 항목사이에 Statement 객체와 PreparedStatement 객체 Connection 객체 - Connection 객체가생성되면데이터베이스에접근이가능해진다. - Connection 객체는자바와데이터베이스의접속된상태의객체를말한다. 데이터베이스에 DML작업을위해서는반드시접속을먼저해야한다. 그리고, 작업후에는반드시접속을해제한다. - Connection 객체를생성할때두개의문자열이필요하다.

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

05Àå

05Àå CHAPTER 05 NT,, XP,. NT NTFS, XP. D,,. XP x NT,,, ( x, x ). NT/ /XP,.. PC NT NT. + Guide to Software: Understanding and Installing Windows 2000 and Windows NT + SOFTWARE Guide to Software 3/e SOFTWARE

More information

Tmax

Tmax Tmax JTmaxServer User Guide Tmax v5.0 SP1 Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 263 분당스퀘어 (AK 프라자

More information

Java Programing Environment

Java Programing Environment Lab Exercise #7 Swing Component 프로그래밍 2007 봄학기 고급프로그래밍 김영국충남대전기정보통신공학부 실습내용 실습과제 7-1 : 정규표현식을이용한사용자정보의유효성검사 (ATM 에서사용자등록용도로사용가능 ) 실습과제 7-2 : 숫자맞추기게임 실습과제 7-3 : 은행관리프로그램 고급프로그래밍 Swing Component 프로그래밍 2

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 11 곡선과곡면 01 Spline 곡선 02 Spline 곡면 03 Subdivision 곡면 C n 연속성 C 0 연속성 C 1 연속성 2 C 2 연속성 01 Spline 곡선 1. Cardinal Spline Curve 2. Hermite Spline Curve 3. Bezier Spline Curve 4. Catmull-Rom Spline Curve 5.

More information

Index 1. Intro Install Connect Scratch 1.4 (Offline Editor) Scratch 2.0 (Online Editor) Connect f

Index 1. Intro Install Connect Scratch 1.4 (Offline Editor) Scratch 2.0 (Online Editor) Connect f Scratch 호환 센서 보드 SKY SSB 설정 메뉴얼 1st of April 2016 Techdine Index 1. Intro... 03 2. Install... 04 3. Connect... 06 3-1. Scratch 1.4 (Offline Editor)... 06 3-2. Scratch 2.0 (Online Editor)... 09 3-2-1. Connect

More information

Microsoft PowerPoint - QVIZMVUMWURI.pptx

Microsoft PowerPoint - QVIZMVUMWURI.pptx 데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL

More information

PowerPoint Template

PowerPoint Template 10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리 10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling)

More information

Mars OS 1.0.2 System Administration Guide

Mars OS 1.0.2 System Administration Guide Mars OS 1.0.2 시스템 관리 가이드 NetApp, Inc. www.netapp.com/kr 부품 번호:215-09731_A0 2015년 2월 4일 수요일 2 목차 목차 Mars OS 정보 12 Mars OS의 기능 13 고성능 13 업계 최고의 스토리지 효율성 13 시스템 모니터링 13 비휘발성 메모리를 사용하여 안정성 및 성능 향상 13 클러스터링

More information