문서유형ㅣ기술정보
분야ㅣ App 개발
적용제품버전ㅣTibero7.2.4
문서번호ㅣTDETI015
개요
티베로에서는 자바 클래스로 생성된 오브젝트를 JAVA EPA와 통신하여 사용할 수 있습니다. 이때 생성된 자바 클래스는 JAVA_CLASS_PATH 파라미터에 설정된 경로에 .class 물리 파일로 생성됩니다.
TAC 환경에서 이 경로가 공유 스토리지 영역이 아닐 경우, 노드 간 파일 불일치로 인해 TBR-150008 오류가 발생할 수 있어 주의가 필요합니다.
방법
설정 방식별 동작 비교
1. 로컬 스토리지 영역을 사용하는 경우 (오류 발생)
자바 클래스를 생성한 노드에만 물리 파일(.class)이 생성됩니다. 타 노드에서는 메타데이터는 인지하지만 실제 파일이 없어 오브젝트 사용이 불가능합니다.
- 1번 노드 : 실제 .class 파일이 생성되어 함수 호출까지 정상 작동
SQL> CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaExtproc" AS
public class SimpleMath { public static int findMax(int x, int y)
{if (x >= y) return x;
else return y; } }
/
Java Source 'JavaExtproc' created.
SQL> CREATE OR REPLACE FUNCTION find_max(x PLS_INTEGER, y PLS_INTEGER)
RETURN PLS_INTEGER IS
LANGUAGE JAVA NAME 'SimpleMath.findMax(int, int) return int';
Function 'FIND_MAX' created
SQL> select find_max(4,60) from dual;
FIND_MAX(4,60)
--------------
60
1 row selected.
- 2번 노드 : 메타데이터는 공유되어 함수 오브젝트 생성은 가능하나, 호출 시 파일 부재로 오류 발생
SQL> select find_max(4,60) from dual; TBR-150008:Invalid class name. - SimpleMath at line 1, column 2 of null: select find_max(4,60) from dual ^
참고
1번 노드의 .class 파일을 2번 노드의 동일 경로로 수동 복사 시 재기동 없이 정상 호출 가능
2. 공유 스토리지 영역을 사용하는 경우 (권장)
모든 노드가 동일한 경로의 물리 파일에 접근할 수 있도록 설정합니다. 1번 노드에서 생성된 소스가 공유 스토리지에 저장되므로, 모든 노드에서 즉시 사용이 가능합니다.
- 설정방법 ($TB_HOME/config/$TB_SID.tip)
JAVA_CLASS_PATH="/공유스토리지영역"
참고
설정하지 않을 시 default 경로 = DB_CREATE_FILE_DEST/java)
- 1번, 2번 노드 : 양 노드에서 호출 성공
SQL> CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaExtproc" AS
public class SimpleMath { public static int findMax(int x, int y)
{if (x >= y) return x;
else return y; } }
/
Java Source 'JavaExtproc' created.
SQL> CREATE OR REPLACE FUNCTION find_max(x PLS_INTEGER, y PLS_INTEGER)
RETURN PLS_INTEGER IS
LANGUAGE JAVA NAME 'SimpleMath.findMax(int, int) return int';
Function 'FIND_MAX' created
SQL> select find_max(4,60) from dual;
FIND_MAX(4,60)
--------------
60
1 row selected.
결론
TAC 환경에서 자바 클래스를 활용하고자 할 경우에는 JAVA_CLASS_PATH 를 공유 스토리지 영역으로 설정할 것을 권장합니다. 이는 노드 간 데이터 일관성을 유지하고 장애 시 서비스 연속성을 보장하기 위한 필수 설정입니다.