mod_tbPSM의 사용

본 장에서는 Apache HTTP 웹 서버를 통하여 tbPSM 프러시저 호출 및 HTML 페이지를 가져올 수 있는 tbPSM를 사용하는 방법을 기술합니다.

Tibero에서는 웹 브라우저 등을 이용하여 HTTP 페이지를 요청하는 경우 tbPSM으로 작성된 프러시저를 호출하여 전송할 수 있는 mod_tbPSM이라는 Apache 모듈을 제공합니다. Apache HTTP 서버는 구동할 때 Apache 설정 파일에 지정된 모듈 라이브러리들을 동적으로 로딩합니다. mod_tbPSM도 같은 원리로 Apache HTTP 서버로부터 로딩되어 기능을 수행합니다.

다음은 mod_tbPSM 모듈을 사용하기 위한 과정입니다.

  1. Apache HTTP 서버 설치

  2. mod_tbPSM 등록

  3. 프러시저 작성 및 실행

Apache HTTP 서버 설치

mod_tbPSM에 최적화된 Apache HTTP 서버 버전은 UNIX 계열의 경우 2.2.31, Windows 계열의 경우 2.4.27입니다.

Apache HTTP 서버에 대한 내용은 아래 주소를 참고합니다.

UNIX: https://httpd.apache.org/download.cgi#apache22 
Windows 64bit: https://www.apachelounge.com/download
Windows 32bit: https://www.apachelounge.com/download

UNIX 계열은 소스 코드를 받아서 직접 빌드해야 하고, Windows 계열은 PC에 설치된 VC에 맞는 버전을 선택하여 다운로드 한 뒤, 포함된 ReadMe.txt 파일에서 Install을 참고하여 설치 및 실행합니다.

참고

Tibero Windows 64bit를 사용할 경우 Apache HTTP도 64bit를 사용해야 합니다.


mod_tbPSM 등록

Apache HTTP 설치가 완료되면 설정 파일을 수정하여 mod_tbPSM을 등록시켜야 합니다. Apache 설정 파일은 $(Apache 서버 설치 경로)/conf/httpd.conf 입니다.

UNIX 계열

httpd.conf 파일에 아래와 같이 추가합니다.

LoadModule tbpsm_module     "${TB_HOME}/client/lib/libmod_tbpsm.so"
<Location /tbpsm>
    SetHandler tbpsm_handler
    AuthType Basic 
    AuthName "Tibero"
</Location>

Windows 계열

Windows는 TB_HOME 환경변수를 사용하지 않으므로, 절대 경로를 지정해주거나 Apache 설치 경로의 module 폴더에 dll 파일을 복사하고 아래와 같이 추가합니다.

LoadModule tbpsm_module         modules/libmod_tbpsm.dll
<Location /tbpsm>
    SetHandler tbpsm_handler 
    AuthType Basic
    AuthName "Tibero"
</Location>

경로를 입력하는 경우 Windows 계열은 원래 역슬래시(\)로 디렉터리를 지정하지만, Apache에서는 슬래시(/)로 입력받습니다.

LoadModule tbpsm_module         c:/tibero/client/lib/libmod_tbpsm.dll
<Location /tbpsm>
    SetHandler tbpsm_handler
    AuthType Basic 
    AuthName "Tibero"
</Location>

참고

Location 부분은 위의 예제와 동일하게 설정해야 합니다.


프러시저 작성 및 실행

본 절에서는 HTP 패키지를 이용하여 HTML 페이지를 리턴하는 프러시저를 작성하고 실행하는 방법을 설명합니다.

참고

HTP 패키지 사용에 대한 자세한 내용은 "Tibero tbPSM 참조 안내서"를 참고합니다.

프러시저 생성

tbPSM 문법에 기반하여 HTP 패키지의 멤버 프러시저를 호출함으로써 HTML 소스코드를 생성합니다.

[예 1] HTP 패키지를 사용한 tbPSM 프러시저 작성 예제

CREATE OR REPLACE PROCEDURE hello (title in varchar2, text in varchar2) 
AS
BEGIN
    HTP.HTMLOPEN;
    
    HTP.HEADOPEN;
    HTP.TITLE(title);
    HTP.HEADCLOSE;
    
    HTP.BODYOPEN;
    HTP.PRINT(text);
    HTP.BODYCLOSE;
    
    HTP.HTMLCLOSE;
END;
/

다음은 예제에 내용에 대한 간략한 설명입니다.

  • HTML의 HEAD 영역에서는 웹 브라우저 제목 표시줄에 title 파라미터를 통해 받은 문자열이 표시됩니다. 예를 들어 hello 프러시저의 첫 번째 인자로 'abc'를 지정하면 제목 표시줄에는 abc가 표시됩니다.

  • HTML의 BODY 영역에서는 웹 브라우저 메인 화면에 text 파라미터를 통해 받은 문자열이 표시됩니다. 예를 들어 hello 프러시저의 두 번째 인자로 'def'를 지정하면 메인 화면에 def가 표시됩니다.

실행

mod_tbPSM 모듈을 통해 프러시저를 실행하기 위한 URL 주소 형식은 다음과 같습니다.

http://{http_server_ip}:{http_server_port}/tbpsm/{tibero_dsn}/
{package_name}.{procedure_name}?{parameter1}={value1}&{parameter2}={value2)&...
항목
설명

http_server_ip

HTTP 서버의 IP 주소이다.

http_server_port

HTTP 서버의 포트 번호이다. 설정되지 않으면, 기본값 80이 적용된다.

tbpsm

httpd.conf 파일에 지정한 경로처럼 mod_tbPSM와 연동되기 위해서 반드시 넣어줘야하는 상대 경로이다.

tibero_dsn

tbdsn.tbr 파일에 명시된 DSN 이름이다. 프러시저가 저장되어있는 Tibero DBMS 서버를 가리킨다.

package_name

호출할 프러시저가 패키지의 멤버일 경우 패키지 이름 및 점(.)을 명시 해야 한다.

procedure_name

호출할 프러시저의 이름이다.

parameter1, parameter2, ... ,

parametern

프러시저의 파라미터 이름이다. URL 주소 형식에서는 질의에 해당한다.

value1. value2, ... , valuen

프러시저 해당 파라미터에 들어가는 IN값이다.

예를 들어 "12.34.56.78" 주소를 가진 HTTP 서버에 접속하여 "test"라는 DSN을 가진 Tibero DBMS 서버에 있는 hello 프러시저(위에서 작성한 프러시저 예제 기반)을 호출하고 싶다면, 아래와 같이 URL 주소를 작성합니다.

http://12.34.56.78/tbpsm/test/hello?title=abc&text=def

웹 브라우저에서 위와 같이 입력하고 요청하면 로그인 화면이 나타납니다. 로그인 화면에 입력하는 아이디 및 비밀번호는 hello 프러시저 수행을 위해 로그인해야 하는 Tibero DBMS 계정의 아이디와 비밀번호와 동일합니다.

자동 로그인 기능 설정 방법

본 절에서는 URL 주소에 따라 자동 로그인할 수 있는 기능의 설정에 대해 설명합니다.

일반적으로 mod_tbPSM와 연동되는 HTTP 서버에 웹 페이지 요청을 하면 로그인 화면이 나타나서 아이디 및 비밀번호를 직접 입력해야 합니다. 자동 로그인 기능을 설정하면 아이디와 비밀번호을 저장해서 자동 로그인합니다. 다만 모든 사용자가 해당 URL 주소로 접근이 가능해지기 때문에 보안상 주의가 필요합니다.

mod_tbPSM에서는 mod.tbr 파일을 읽어들여 자동 로그인 기능을 지원합니다. mod.tbr 파일은 TB_HOME/client/config 경로에 아래와 같은 형식으로 작성합니다.

[예 2] mod.tbr 작성 예제

(LOCATION="/test")=(
    (USERNAME="tibero")
    (PASSWORD="tmax")
)

(LOCATION="/test2")=(
    (USERNAME="tibero") 
    (PASSWORD="tmax")
)

(LOCATION="/test3")=( (USERNAME="sys")
    (PASSWORD="tibero")
)

다음은 mod.tbr 예제의 내용에 대한 간략한 설명입니다.

항목

설명

LOCATION

URL 주소의 상대 경로이다.

USERNAME

접속할 DB 사용자 계정의 이름이다.

PASSWORD

접속할 DB 사용자 계정의 비밀번호이다.

'http://12.34.56.78/tbpsm/test/hello?title=abc&text=def'와 같이 접속한다고 했을 때, 'http://12.34.56.78/tbpsm 기준으로 상대 경로를 찾고, mod.tbr 파일에서 일치하는 LOCATION을 찾으면 설정된 'USERNAME'과 'PASSWORD'로 자동으로 로그인합니다.

위의 예제처럼 여러 개의 접속 정보를 사용할 경우 tbdsn.tbr 파일도 DSN 접속 정보를 수정해야 합니다.

[예 3] tbdsn.tbr 수정 예제

test=(
    (INSTANCE=(HOST=localhost)
              (PORT=8629)
              (DB_NAME=tibero)
          )
)

test2=(
          (INSTANCE=(HOST=localhost)
                    (PORT=8629)
                    (DB_NAME=tibero)
          )
)

test3=(
          (INSTANCE=(HOST=localhost)
                    (PORT=8629)
                    (DB_NAME=tibero)
          )
)

Last updated