환경설정 및 TACF 리소스

OpenFrame Manager 사용을 위한 환경설정과 TACF 리소스에 대해서 설명한다.

1. 환경설정

OpenFrame Manager를 사용하기 위해서 다음의 파일에 필요한 설정을 해야한다.

1.1. ofmanager.properties

OpenFrame Manager의 환경에 대한 정보와 설치 과정에서 선택한 정보가 아래 파일에 저장된다.

$OFMANAGER_HOME/conf/ofmanager.properties

설정 파일의 항목 값을 변경하는 경우 애플리케이션이 디플로이되어 있는 JEUS MS(Managed Server)의 재기동이 필요하다.

다음은 ofmanager.properties의 형식과 각 설정 항목에 대한 설명이다.

################################################################################
#####                                                                      #####
#####            OpenFrame Manager CONFIGURATIONS                          #####
#####                                                                      #####
################################################################################

# DB Property
ofmanager.datasource=<datasource-name>

# OpenFrame GW Property
openframe.webterminal.url=<webterminal-ip>:<ofgw-luport>/<webterminal-name>
openframe.webterminal.name=<ofgw-name>

# Tmax Property
openframe.tmax.ip=<tmax-ip>
openframe.tmax.port=<tmax-port>
openframe.tmax.connection.groupname=<tmax-connection-groupanme>
openframe.tmax.connection.init=<tmax-connection-init>
openframe.tmax.connection.max=<tmax-connection-max>
openframe.tmax.connection.inc=<tmax-connection-inc>

# OS Property
openframe.os = {mvs|msp|xsp}

# CPM Name
openframe.cpm.name=<cpm-name>

# Encoding
encoding = <encoding-name>

# Menus Property
ofmanager.module = [BM|TM|OSC|AIM|NDB|OSI|HIDB]

# Node Information
openframe.defaultNode=<node-name>
openframe.nodelist=<node-list>

# Domain Property
domain.name = <domain-name>
domain.type = {Dev|Prod|Test}

# textarea font change
ofmanager.language={english|japanese}

# Auto Refresh Interval in CM > Console > Reply
ofmanager.consoleReplyRefreshInterval = ( 0(default) ~ 4 : not using auto-refresh, 5 and over : using auto-refresh)


# Allow editing jcl
ofmanager.jclSave = {yes|no}
ofmanager.userSpool = {true|false}#Using UserSpool

# OFManager font
# recommendation
# japanese = MS Gothic
# english  = HACK, monospace, sans-serif, serif
ofmanager.userFont = MS Gothic
항목 설명

ofmanager.datasource

OpenFrame Manager에서 데이터베이스 테이블을 생성 및 사용하기 위해 데이터소스 이름을 지정한다.

이 값은 JEUS의 도메인 설정에 존재하는 <data-source> 항목의 <data-source-id> 값을 설정해야 한다.

openframe.webterminal.url

OpenFrame Manager의 [OSC] 메뉴에서 터미널 정보를 확인하기 위해 지정한다.

  • webterminal-ip: OpenFrame GW의 웹 터미널이 설치되어 있는 IP를 지정한다.

  • ofgw-luport: OpenFrame GW의 LU PORT를 지정한다. OpenFrame GW 설정 파일 ofgw.properties에서 lu.port 항목에서 확인할 수 있다.

  • webterminal-name: OpenFrame GW의 웹 터미널 애플리케이션 이름을 지정한다. OpenFrame GW가 설치된 JEUS의 domain.xml에서 확인할 수 있다.

openframe.webterminal.name

OpenFrame Manager의 [OSC] 메뉴에서 온라인 트랜잭션 상태를 확인하기 위해 지정한다.

OpenFrame GW의 Gateway name을 지정한다. OpenFrame GW 설정 파일 ofgw.properties에서 gw.name 항목으로 확인할 수 있다.

openframe.tmax.ip

OpenFrame Manager에서 접속할 OpenFrame의 Tmax 서버에 대한 IP를 지정한다.

openframe.tmax.port

OpenFrame Manager에서 접속할 OpenFrame의 Tmax 서버에 대한 포트 번호를 지정한다.

OpenFrame이 설치되어 있는 환경에서 $TMAX_HOST_PORT로 확인 가능하다.

openframe.tmax.connection.groupname

Tmax와 커넥션을 수행하기 위한 WebT를 이용한다.

지정한 groupname의 이름으로 WebtConnectionPool이 생성되어 통신한다. (기본값: tmax1)

openframe.tmax.connection.init

Tmax와 커넥션을 수행하기 위한 WebtConnectionPool의 최초 갯수를 설정한다. (기본값: 10)

openframe.tmax.connection.max

Tmax와 커넥션을 수행하기 위한 WebtConnectionPool의 최대 갯수를 설정한다. (기본값: 100)

openframe.tmax.connection.inc

Tmax와 커넥션이 부족할 경우 증가시키는 갯수의 단위를 설정한다. (기본값: 10)

openframe.os

설치될 OpenFrame의 OS를 입력한다. (기본값: mvs)

  • mvs: Manager를 MVS OS의 OpenFrame과 연동할 때 설정한다. 데이터 셋 관련 명령을 수행할 때 Base의 IDCAMS 유틸리티를 통해 수행된다.

  • msp: Manager를 MSP OS의 OpenFrame과 연동할 때 설정한다. 데이터 셋 관련 명령을 수행할 때 Base의 KQCAMS 유틸리티를 통해 수행된다.

  • xsp: Manager를 XSP OS의 OpenFrame과 연동할 때 설정한다. 데이터 셋 관련 명령을 수행할 때 Base의 KQCAMS 유틸리티를 통해 수행된다.

openframe.cpm.name

OpenFrame Manager의 [Base] 메뉴의 Dataset view에서 보여지는 데이터 문자형식에 따라 CPM을 지정한다. (기본값: EBCASCUS.cpm)

설정 가능한 CPM 테이블들은 $OFMANAGER_HOME/data/cpm 디렉터리에 존재한다.

encoding

OpenFrame Manager의 [Base] 메뉴에서 SPOOL, JCL, Log 등의 파일들을 읽어들여 변환할 때 사용하는 문자 케릭터셋 이름이다.

입력 가능한 값은 Oracle JDK에서 지원하는 인코딩 값과 동일하다. OpenFrame이 설치된 환경과 동일하게 지정한다. 지원하는 인코딩은 'https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html'를 참고한다. (기본값: iso-8859-15)

ofmanager.module

OpenFrame Manager에서 사용할 메뉴들을 선택하여 설정한다.

각 메뉴들은 아래 약어로 설정이 가능하고 세미콜론(;)으로 구분하여 여러 개를 설정할 수 있다. 설정된 메뉴는 OpenFrame Manager에서 사용할 수 있도록 보여진다. [Base] 메뉴는 설정과 무관하게 항상 보여진다.

  • BM: [Batch] 메뉴

  • TM: [TACF] 메뉴

  • OSC: [OSC] 메뉴

  • AIM: [AIM] 메뉴

  • NDB: [NDB] 메뉴

  • OSI: [OSI] 메뉴

  • HIDB: [HIDB] 메뉴

NodeList

Openframe 환경의 노드명을 입력한다.

노드가 복수 개일 경우 각 노드는 세미콜론(;)으로 구분되어야 한다. (기본값: NODE1;NODE2)

DefaultNode

OFManager에서 기본으로 사용할 노드를 기재한다. (기본값: NODE1)

domain.name

OpenFrame Manager의 도메인 이름을 설정한다.

사이트 환경 등의 이름을 사용자가 자유롭게 설정할 수 있고 메인 화면의 "인포메이션 영역"에 보여진다.

domain.type

OpenFrame Manager의 도메인 타입을 설정한다.

애플리케이션을 사용하는 운영 목적에 맞게 이름을 아래 항목 중 선택하여 설정할 수 있고 메인 화면의 왼쪽 상단 타이틀명 영역에 해당 설정명이 보여진다. 단, Prod을 설정할 때에는 타이틀에 Prod가 보이지 않고, OpenFrame Manager만 보여진다.

  • Dev

  • Prod

  • Test

ofmanager.language

화면의 Textarea의 폰트를 설정한다(예: JCLs 상세 화면).

지정하지 않거나 해당 항목이 없을 경우 기본값으로 출력된다.

  • english: Noto Sans CJK 폰트로 출력된다. (기본값)

  • japanese: MS gothic 폰트로 출력된다.

ofmanager.consoleReplyRefreshInterval

사용자가 원하는 Interval 기반으로 Console Reply가 Auto-Refresh되는 기능이다.

  • 0~4: Auto-Refresh를 사용하지 않는다. (기본값: 0)

  • 5 이상: Auto-Refresh의 interval을 설정한다. (단위: second)

ofmanager.jclSave

OpenFrame Manager의 [Batch] > [JCLs] > [JCL Details] 에서 JCL을 편집 후 저장을 하기 위한 기능이다.

  • yes: [Save] 버튼이 출력된다.

  • no: [Save] 버튼이 출력되지 않는다. (기본값)

ofmanager.userSpool

OpenFrame Manager의 [Batch] > [User Spool] 메뉴 사용 여부를 설정한다.

[User Spool] 메뉴는 Output class가 W인 Spool 조회가 가능하다. 해당 항목을 설정하지 않은 경우 기본값으로 false가 설정된다.

ofmanager.userFont

OpenFrame Manager의 Tmax로부터 전달 되는 text에 대해서 지정한 font 로 출력되도록 설정한다.

OpenFrame GW의 웹 터미널 설정에 대한 자세한 내용은 OpenFrame GW "운영자 안내서"의 "OpenFrame GW 설정 파일"을 참고한다.

다음은 설정 예이다.

################################################################################
#####                                                                      #####
#####            OpenFrame Manager CONFIGURATIONS                          #####
#####                                                                      #####
################################################################################

# DB Property
ofmanager.datasource = ds_ofm1

# OpenFrame GW Property
openframe.webterminal.url = 192.168.105.191:5699/webterminal7
openframe.webterminal.name= ofgw7

# TMAX WebT Property

# Tmax Property
openframe.tmax.ip=192.168.105.207
openframe.tmax.port=4394

openframe.tmax.connection.groupname=tmax1
openframe.tmax.connection.init=10
openframe.tmax.connection.max=100
openframe.tmax.connection.inc=10

# OS Property
openframe.os = msp

# CPM Name
openframe.cpm.name=EBCASCUS.cpm

# Encoding
encoding = iso-8859-15

# Menus Property
ofmanager.module = BM;TM;OSC;

# Node Information
openframe.defaultNode=NODE1
openframe.nodelist=NODE1;NODE2;

# Domain Property
domain.name = OPENFRAME Env.
domain.type = development

# textarea MS gothic font
ofmanager.language=japanese

# Auto Refresh Interval in CM > Console > Reply
ofmanager.consoleReplyRefreshInterval = 5

# Using UserSpool
ofmanager.userSpool=true

# Menu Authority Check
ofmanager.menuAuthChk=true

# OFManager font
# recommendation
# japanese = MS Gothic
# english  = HACK, monospace, sans-serif, serif
ofmanager.userFont = HACK

1.2. logback.xml

logback.xml에 로그 파일의 파일 포맷 및 로그 레벨을 정의한다.

다음은 속성 파일의 설정 예이다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
         <pattern>
         [%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSSS}] [OFMANAGER|%-24logger{0}] [%.-1level] %msg%n
         </pattern>
      </encoder>
   </appender>
   <property name="USER_HOME" value="/home/user/logs" />

   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
         <!-- daily rollover -->
         <fileNamePattern>${USER_HOME}/ofmanager_%d{MM-dd-yyyy}.%i.log</fileNamePattern>

         <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- or whenever the file size reaches 50MB -->
            <maxFileSize>300MB</maxFileSize>
         </timeBasedFileNamingAndTriggeringPolicy>
         <!-- keep 30 days' worth of history -->
         <maxHistory>30</maxHistory>
      </rollingPolicy>
      <encoder>
         <pattern>
            [%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSSS}] [OFMANAGER|%-24logger{0}] [%.-1level] %msg%n
         </pattern>
      </encoder>
   </appender>

   <logger name="org.springframework" level="OFF">
   </logger>
   <logger name="com.tmax.ofmanager" additivity="false" level="DEBUG">
   <appender-ref ref="ROLLING" />
   </logger>

   <root level="WARN">
      <appender-ref ref="ROLLING" />
   </root>
</configuration>

다음은 속성 파일의 항목에 대한 설명이다.

항목 설명

<configuration>

scan, scanperiod 항목을 설정하면 동적으로 로그 레벨을 변경할 수 있다.

<appender>

LogBack에서 제공하는 형태로 로거 형식을 추가할 수 있다(Event 마다 로그를 기록하는 것이 가능하도록 한다).

  • ConsoleAppender: 콘솔로 출력되는 형식을 제공한다.

  • RollingFileAppender: 파일의 최대 용량을 설정하여 인텍스로 로그 파일을 생성한다.

<property>

property에 설정한 값은 변수처럼 사용이 가능하다. 이 파일에서 USER_HOME은 로그 파일의 경로(Log File Path)로 사용된다.

<fileNamepatten>

로그 파일명의 패턴을 정한다.

기본값은 날짜 형식과 인덱스("%i")가 추가된다.

<maxFileSize>

파일 하나당 최대 용량을 설정한다.

<maxHistory>

파일의 로그를 남기는 최대 일수를 정한다. 값을 넘어가면 가장 오래된 순으로 자동으로 삭제된다.

<pattern>

출력되는 로그의 형식을 설정한다.

<root>

로그 레벨을 설정하고 <appender>를 추가하여 해당 로거 형식에 로그 레벨로 출력된다.

해당 항목은 기본으로 제공하는 항목이며, 운영자가 환경에 맞도록 커스터마이징하여 사용해야 한다. 추가 항목에 대해서는 logback 관련 안내서를 참고한다.

2. TACF 리소스

OpenFrame Manager에서의 일부 기능은 TACF 권한 인증을 받아 권한에 따라 기능 사용에 제한을 둘 수 있다. 각 리소스들은 OFMANAGR 클래스에 정의하게 될 경우 TACF 권한 인증을 통과한 사용자만 해당 기능을 사용할 수 있다.

OFMANAGR 클래스의 해당 리소스를 정의하지 않을 경우 모든 사용자에게 접근 권한을 허용하게 된다.

리소스 프로파일 설명

LOGIN

OFMANAGR 클래스에 LOGIN 리소스를 정의할 경우 LOGIN 리소스의 READ 권한이 있는 사용자만 OpenFrame Manager에 로그인할 수 있다.

ST.OFCONFIG

OFMANAGR 클래스에 ST.OFCONFIG 리소스를 정의할 경우 ST.OFCONFIG 리소스의 READ 권한이 있는 사용자만 [Config] 메뉴 버튼이 표시된다.

CM.COMMAND

OFMANAGR 클래스에 CM.COMMAND 리소스를 정의할 경우 CM.COMMAND 리소스의 READ 권한이 있는 사용자만 [Base] > [Command] 메뉴가 표시된다.

OM.PGMADMIN

OFMANAGR 클래스에 OM.PGMADMIN 리소스를 정의할 경우 OM.PGMADMIN 리소스의 READ 권한이 있는 사용자만 [OSC] > [Program Deploy] 메뉴에서 [Add], [Import], [Edit], [Delete] 버튼 사용이 가능하다.

OM.AIM

OFMANAGR 클래스에 OM.AIM 리소스를 정의할 경우 OM.AIM 리소스의 READ 권한이 있는 사용자만 [AIM] 메뉴가 표시된다.

TM.USER

OFMANAGR 클래스에 TM.USER 리소스를 정의할 경우 TM.USER 리소스의 READ 권한이 있는 사용자만 [TACF] > [Users] 메뉴가 표시된다.

ofmanager.menuAuthChk를 false로 설정한 경우에는 [Users] 메뉴에 대한 TACF 권한 체크를 수행하지 않는다.

TM.GROUP

OFMANAGR 클래스에 TM.GROUP 리소스를 정의할 경우 TM.GROUP 리소스의 READ 권한이 있는 사용자만 [TACF] > [Groups] 메뉴가 표시된다.

ofmanager.menuAuthChk를 false로 설정한 경우에는 [Groups] 메뉴에 대한 TACF 권한 체크를 수행하지 않는다.

TM.RESOURCE

OFMANAGR 클래스에 TM.RESOURCE 리소스를 정의할 경우 TM.RESOURCE 리소스의 READ 권한이 있는 사용자만 [TACF] > [General Resources] 메뉴가 표시된다.

ofmanager.menuAuthChk를 false로 설정한 경우에는 [General Resources] 메뉴에 대한 TACF 권한 체크를 수행하지 않는다.

TM.DATASET

OFMANAGR 클래스에 TM.DATASET 리소스를 정의할 경우 TM.DATASET 리소스의 READ 권한이 있는 사용자만 [TACF] > [Datasets] 메뉴가 표시된다. ofmanager.menuAuthChk를 false로 설정한 경우에는 [Datasets] 메뉴에 대한 TACF 권한 체크를 수행하지 않는다.

BM.USERSPOOL

OFMANAGR 클래스에 BM.USERSPOOL 리소스를 정의할 경우 BM.USERSPOOL 리소스의 READ 권한이 있는 사용자만 [Batch] > [User Spool] 메뉴가 표시된다.

NDB

OFMANAGR 클래스에 NDB 리소스를 정의할 경우 NDB 리소스의 READ 권한이 있는 사용자만 [NDB] 메뉴가 표시된다.

리소스 프로파일 권한을 가진 사용자의 해당 메뉴 동작에 대한 자세한 설명은 본 안내서에서 각 기능의 설명을 참고한다.

3. 멀티 노드 설정

멀티 노드 환경에서 OpenFrame Manager를 운영하기 위해서는 몇 가지 추가 설정이 필요하다. 참고로 같은 도메인에 속한 모든 노드의 Tmax 설정 파일은 동일해야 한다.

다음은 NODE1과 NODE2로 멀티 노드를 구현하는 경우에 대한 설명이다. 멀티 노드 환경에서 OpenFrame Manager를 운영하기 위해 몇몇 서비스는 Tmax의 Data-Driven-Routing 기능을 사용한다. 이때 라우팅에 사용하는 데이터는 노드 이름이다. SERVICE 절은 전체가 아닌 수정되어야 하는 서비스만 나열한다. OSCOIVP1_OMC1 서비스는 OpenFrame OSC가 설치되어 있는 환경에서 필요한 서비스이다.

*ROUTING
rt_nodename FIELD = "FIELD/FB_NODENAME",
            RANGES = "'NODE1':svg_node1,'NODE2':svg_node2,*:svg_node1"

*SERVICE
OFRUISVRCONFIG  SVRNAME = ofruisvr, ROUTING = rt_nodename
OFRUISVRRDFILE  SVRNAME = ofruisvr, ROUTING = rt_nodename
OFRUISVRRDDIR   SVRNAME = ofruisvr, ROUTING = rt_nodename

OBMJMSVRJDETAIL SVRNAME = obmjmsvr, ROUTING = rt_nodename

OBMJINITCHECK   SVRNAME = obmjinit, ROUTING = rt_nodename
OBMJINITCTLNODE SVRNAME = obmjinit, ROUTING = rt_nodename
OBMJINITCTLJOB  SVRNAME = obmjinit, ROUTING = rt_nodename
OBMJINITCTLINIT SVRNAME = obmjinit, ROUTING = rt_nodename
OBMJINITRUN     SVRNAME = obmjinit, ROUTING = rt_nodename
OBMJINITSTATUS  SVRNAME = obmjinit, ROUTING = rt_nodename

OSCOIVP1_OMC1   SVRNAME = OSCOIVP1OMC, ROUTING = rt_nodename

멀티 노드 환경에서 TJES를 사용하기 위해서 필요한 설정은 OpenFrame Batch "TJES 안내서"의 "멀티 노드 설정"을 참고한다.