본 장에서는 Apache HTTP 웹서버를 통하여 tbPSM 프러시저 호출 및 HTML 페이지를 가져올 수 있는 tbPSM를 사용하는 방법을 기술한다.
Tibero에서는 웹 브라우저 등을 이용하여 HTTP 페이지를 요청하는 경우 tbPSM으로 작성된 프러시저를 호출하여 전송할 수 있는 mod_tbPSM이라는 Apache 모듈을 제공한다.
Apache HTTP 서버는 구동할 때 Apache 설정 파일에 지정된 모듈 라이브러리들을 동적으로 로딩한다. mod_tbPSM도 같은 원리로 Apache HTTP 서버로부터 로딩되어 기능을 수행한다.
다음은 mod_tbPSM 모듈을 사용하기 위한 과정이다.
Apache HTTP 서버 설치
mod_tbPSM 등록
프러시저 작성 및 실행
각 과정에 대한 자세한 설명은 해당 절의 내용을 참고한다.
mod_tbPSM에 최적화된 Apache HTTP 서버 버전은 2.2.21이다.
Apache HTTP 서버에 대한 내용은 아래 주소를 참고한다.
http://projects.apache.org/projects/http_server.html
UNIX 계열은 소스 코드를 받아서 직접 빌드해야 하고, Windows 계열은 별도로 설치 바이너리를 제공하므로 설치만 하면 된다.
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 참조 안내서"의 "제49장 HTP"를 참고한다.
tbPSM 문법에 기반하여 HTP 패키지의 멤버 프러시저를 호출함으로써 HTML 소스 코드를 생성한다.
[예 5.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 계정의 아이디와 비밀번호와 동일하다.