環境設定と運用

本章では、OpenFrame GWの環境設定ファイルが格納されているディレクトリ構造と環境設定ファイル、およびOpenFrame GWの運用方法について説明します。

1. ディレクトリ構造

JEUS(WAS)のディレクトリ構造は以下のとおりです。

domainsフォルダーの配下にserversフォルダーが存在し、applicationフォルダー内にOpenFrame GWのバイナリが格納されます。

$JEUS_HOME/domains
  +---- <domain_name>
     +---- bin
     +---- config
     +---- lib
     +---- servers
          +---- <server_name>
               +---- bin
               +---- logs
               +---- lib
                   +---- application
                       |---- logback.xml
                       |---- *.jar
                       +---- UninstallerData
                       +---- scripts
                       +---- webterminal
                       +---- ofgwconf
                           |---- ofgw.properties
                           +---- cpm
                           +---- license
                           +---- initScreen
                               |---- initScreen.txt
                           |---- vtam.properties
                           |--- dhcp.properties
servers/<server_name>/lib/application

ofgw-71-<revision>.jarとその他のライブラリが格納されています。(logback.xml設定ファイルも、このフォルダーに格納)

フォルダーまたはファイル 説明

logback.xml

ログファイルのファイル形式とログレベルを定義する設定ファイルです。詳細については、logback.xmlを参照してください。

servers/<server_name>/lib/application/ofgwconf

OpenFrame GWの設定ファイルが格納されています。

フォルダーまたはファイル 説明

ofgw.properties

OpenFrame GWとWeb端末の環境を定義する設定ファイルです。詳細については、ofgw.propertiesを参照してください。

cpm

Web端末で使用するCPMファイルが格納されています。

license

OpenFrame GWのライセンス・ファイルが格納されています。

initScreen

端末の初期接続画面を表示するためのinitScreen.txtファイルが格納されています。詳細については、initScreen.txtを参照してください。

vtam.properties

マルチポートの設定と端末が各ポートに接続した場合に表示する初期画面の設定をサポートする設定ファイルです。詳細については、vtam.propertiesを参照してください。

dhcp.properties

DHCP環境でホスト名を使用してLUの自動割り当て機能をサポートする設定ファイルです。詳細については、dhcp.propertiesを参照してください。

WASに設定されているアプリケーションがデプロイされたフォルダーは、次のディレクトリに格納されます。

${JEUS_HOME}/domains/<domain_name>/servers/<server_name>/lib/application/
<application_id>/

各ディレクトリの詳細については、『JEUS アプリケーション&デプロイメントガイド』の「1.1.4. アプリケーション管理のディレクトリ構造」を参照してください。

2. OpenFrame GWの設定ファイル

本節では、OpenFrame GWを使用するために必要な設定ファイルの項目と設定例について説明します。

2.1. ofgw.properties

以下は、ofgw.propertiesファイルの各設定項目についての説明です。

gw.name =gateway_name
datasource.name = datasource_name
lu.port = port_no
lu.autoalloc = {yes|no}
vtamProperties = {yes|no}
dhcpProperties = {yes|no}
debug.time = {yes|no}
translate.threadPool.core = translate_threadpool_core
translate.threadPool.max = translate_threadpool_max
translate.threadPool.keepAliveTime = translate_threadpool_keepalivetime
db.threadPool.core = db_threadpool_core
db.threadPool.max = db_threadpool_max
db.threadPool.keepAliveTime = db_threadpool_keepalivetime
coroutine.threadPool.core = coroutine_threadpool_core
coroutine.threadPool.max = coroutine_threadpool_max
coroutine.threadPool.keepAliveTime = coroutine_threadpool_keepalivetime
rmi = {yes|no}
rmi.ip = rmi_deployed_ip_address
rmi.port = rmi_port_no
rmi.serviceName = rmi_service_name
rmi.proc = aim_procedure_name
rmi.smqn = aim_smqn_name
rmi.addLength = {yes|no}
rmi.logMessage = {yes|no}

cpmpath = cpmfile_path
terminal.timeout = terminal_timeout
terminal.aliveCheck = {yes|no}
terminal.aliveInterval = terminal_alive_checktime
sslEnabled = {yes|no}

tmax.retrytime = tmax_retrytime
tmax.node.list = node_name_list
tmax.node.NODE1.name = node_name
tmax.node.NODE1.ip = node_ip_address
tmax.node.NODE1.port = node_port_no
tmax.node.NODE1.min = node_min
tmax.node.NODE1.max = node_max
tmax.node.NODE1.rate = node_rate
tmax.node.NODE1.timeout = node_timeput
tmax.node.NODE1.idletime = node_idletime
項目 説明

gw.name

ゲートウェイ名を指定します。

datasource.name

設定ファイル(domain.xml)に指定されたデータベース名を指定します。

lu.port

3270端末が使用するポート番号を指定します。

lu.autoalloc

LUの自動割り当て機能を使用するかどうかを指定します。RMIサーバーを使用する場合は、yesに指定する必要があります。(デフォルト値: yes)

lu.checkStatus

LUステータスのチェック機能を使用するかどうかを指定します。(デフォルト値: no)

vtamProperties

VTAMで各ポートごとに接続可能な端末とリージョンを指定し、各初期画面を指定して使用できる機能を有効にするかどうかを指定します。(デフォルト値: no)

dhcpProperties

DHCP環境でdhcp.propertiesファイルに定義されたホスト名にマッピングされるIPでLUの自動割り当て機能を使用するかどうかを指定します。(デフォルト値: no)

debug.time

デバッグ時に、パフォーマンスをチェックするために使用する時間ログを表示するかどうかを指定します。

translate.threadPool.core

ワークスレッドの最小数を指定します。

translate.threadPool.max

ワークスレッドの最大数を指定します。

translate.threadPool.keepAliveTime

ワークスレッドの最小数より多くのスレッドが作成されている場合、アイドル状態のワークスレッドが終了されるための時間を指定します。(単位: s)

db.threadPool.core

DBスレッドの最小数を指定します。

db.threadPool.max

DBスレッドの最大数を指定します。

db.threadPool.keepAliveTime

DBスレッドの最小数より多くのスレッドが作成されている場合、アイドル状態のDBスレッドが終了されるための時間を指定します。(単位: s)

coroutine.threadPool.core

コルーチン・スレッドの最小数を指定します。

coroutine.threadPool.max

コルーチン・スレッドの最大数を指定します。

coroutine.threadPool.keepAliveTime

コルーチン・スレッドの最小数より多いスレッドが生成されている場合、アイドル状態のコルーチン・スレッドを終了させるための時間を指定します。(単位: s)

rmi

RMIサーバーを使用するかどうかを指定します。(デフォルト値: no)

rmi.ip

RMIサーバーのIPアドレスを指定します。(OpenFrame GWがデプロイされたサーバーのIPアドレスを指定します。)

rmi.port

RMIサーバーがデータを受信するポート番号を指定します。

rmi.serviceName

RMIサーバーがデータを受信するサーバー名を指定します。

rmi.proc

RMIサーバーがWEBAIMと通信するとき、データを送信するAIMのプロシージャを指定します。

rmi.smqn

RMIサーバーがWEBAIMと通信するとき、データを送信するAIMのSMQNを指定します。

rmi.addLength

RMIサーバーがWEBAIMと通信するとき、受信するデータの先頭に長さ情報を追加するかどうかを指定します。(デフォルト値: no)

rmi.logMessage

RMIサーバーが送受信するデータをロギングするかどうかを指定します。yesに設定する場合は、ロガー・エンコーディングをSJISに変更する必要があります。(デフォルト値: no)

cpmpath

Web端末で使用されるCPMファイルのパスを指定します。指定しない場合は、デフォルト・パスを使用します。

(デフォルト・パス: $OFGW_HOME/ofgwconf/cpm/)

terminal.timeout

サーバーと通信していないアイドル状態のWeb端末の接続を切断するためのタイムアウトを指定します。0に指定すると、タイムアウトは使用されません。(単位: s、デフォルト値: 0)

terminal.aliveCheck

OpenFrame GWで3270エミュレーターおよびWeb端末の接続状態をチェックするために使用します。ネットワークの消失などにより接続が切断された場合に、端末リソースを自動で解放します。

  • yes : terminal.aliveIntervalに設定された時間(秒)ごとに現在OpenFrame GWに接続された端末の接続状態をチェックします。

  • no : OpenFrame GWに接続された端末の接続状態をチェックしません。(デフォルト値)

terminal.aliveInterval

OpenFrame GWに接続された端末の接続状態をチェックする時間間隔を指定します。(単位: s、デフォルト値: 10、最小値: 10)

sslEnabled

OpenFrame GWで3270エミュレーターと通信するとき、SSLの設定に応じて以下のように指定します。

  • yes : 3270エミュレーターでSSLが有効に指定された場合は、OpenFrame GWでyesに設定して通信します。

  • no : 3270エミュレーターでSSLが無効に指定された場合は、OpenFrame GWでnoに設定して通信します。(デフォルト値)

tmax.retrytime

Tmaxの接続が切断されたとき、再接続を試行するまでの待機時間を指定します。(単位:ミリ秒)

tmax.node.list

Tmaxノード名を区切り文字(,)を使用して指定します。

(例 : NODE1、NODE2、NODE3...)

tmax.node.[NODENAME].name

Tmaxノード名を指定します。

tmax.node.[NODENAME].ip

TmaxノードのIPを指定します。

tmax.node.[NODENAME].port

Tmaxノードのポート($TMAX_HOST_PORT)を指定します。

tmax.node.[NODENAME].min

Tmax接続の最小数を指定します。

tmax.node.[NODENAME].max

Tmax接続の最大数を指定します。

tmax.node.[NODENAME].rate

接続が不十分な場合、追加する数を指定します。

tmax.node.[NODENAME].timeout

接続時の待機時間を指定します。(単位: ミリ秒)

tmax.node.[NODENAME].idletime

接続数が最小数より多い場合、使用していない接続を終了する時間を指定します。(単位:秒)

  1. Tmaxノードの詳細については、『Tmax 管理者ガイド』を参照してください。

  2. RMIサーバーの構造と特徴についての詳細は、Web通信を参照してください。

以下は、ofgw.propertiesファイルの設定例です。

gw.name = ofgw
datasource.name = ds1
lu.port = 5556
lu.autoalloc = yes
lu.checkStatus = yes
debug.time = no
translate.threadPool.core = 5
translate.threadPool.max = 30
translate.threadPool.keepAliveTime = 60
db.threadPool.core = 5
db.threadPool.max = 30
db.threadPool.keepAliveTime = 60
coroutine.threadPool.core = 5
coroutine.threadPool.max = 30
coroutine.threadPool.keepAliveTime = 60
rmi = yes
rmi.ip = 192.144.121.11
rmi.port = 5557
rmi.serviceName = ofgwaad
rmi.proc = aadproc
rmi.smqn = aadsmqn

cpmpath =
terminal.timeout = 60
sslEnabled = no

tmax.node.list = NODE1
tmax.node.NODE1.name = NODE1
tmax.node.NODE1.ip = 192.168.37.11
tmax.node.NODE1.port = 6511
tmax.node.NODE1.min = 5
tmax.node.NODE1.max = 10
tmax.node.NODE1.rate = 2
tmax.node.NODE1.timeout = 20000
tmax.node.NODE1.idletime = 90
tmax.retrytime = 60000

2.2. vtam.properties

vtam.propertiesファイルは、ofgw.propertiesのvtamProperties設定が「yes」の場合にのみ動作します。

現在はOSCと連携する場合にのみサポートし、OSIとAIMではこの機能をサポートしません。

以下は、vtam.propertiesファイルの各設定項目についての説明です。

port.list = port_name
[PORT_NAME].port = port_no
[PORT_NAME].regionList = region_list
[PORT_NAME].initScreen = init_screen_filename
項目 説明

port.list

VTAMに設定されているポートを指定するためのポート名を設定します。

(例: PORT1,PORT2,PORT3...)

[PORT_NAME].port

PORT_NAMEのポート番号を設定します。ポート番号は、VTAMリソースに登録されているポートを使用する必要があります。

複数のポート番号のいずれか1つは、ofgw.propertiesのlu.portの値と一致する必要があります。

[PORT_NAME].regionList

VTAMポートを使用して接続した端末で接続を許可するリージョン・サーバー名を設定します。(例: OSC00001, OSC00002...)

[PORT_NAME].initScreen

端末が該当のポートで接続された場合に表示する最初の画面ファイルを指定します。($OFGW_HOME/ofgwconf/initScreenフォルダー内に存在するファイルである必要があります)

以下は、vtam.propertiesファイルの設定例です。

port.list = PORT1,PORT2,PORT3
PORT1.port = 5556
PORT1.regionList = OSCOIVP1
PORT1.initScreen = initScreen.txt
PORT2.port= 5558
PORT2.regionList = OSCOIVP2
PORT2.initScreen = initScreen2.txt
PORT3.port = 5570
PORT3.regionList = OSCOIVP1,OSCOIVP2
PORT3.initScreen = initScreen3.txt

2.3. dhcp.properties

dhcp.propertiesファイルは、ofgw.propertiesのdhcpProperties設定が「yes」の場合にのみ動作します。

以下は、dhcp.propertiesファイルの各設定項目についての説明です。

hostnames = [HOST_NAME1]:[IP1],[HOST_NAME1]:[IP2],[HOST_NAME2]:[IP3],...,\
            [HOST_NAME5]:[IP10],...
項目 説明

hostnames

DHCP環境でWeb端末を介して入力されたホスト名にマッピングされるIP値を保存します。

  • [HOST_NAME] : Web端末を介して入力されるホスト名を指定します。

  • [IP] : ホスト名にマッピングされるIP値を指定します。

以下は、dhcp.propertiesファイルの設定例です。

hostnames=hostname1:192.168.11.23,hostname2:192.168.14.32,hostname2:192.168.14.33,\
hostname1:192.168.11.31,hostname3:192.168.17.87
DHCPでのLU割り当て機能の使用方法

DHCP環境ではIPが動的に変わるため、固定IPを使用してLUを割り当てるには、別の方法を使用する必要があります。OpenFrame GWでは、Web端末のクエリ・パラメータとして入力されるホスト名を使用して固定IPを抽出し、このIPを使用してLUを割り当てる方法をサポートしています。

以下は、dhcpPropertiesを「yes」に設定した後、Web端末を使用してDHCP環境でLUの割り当てを受ける方法の例を示しています。

figure dhcp lu allocation
DHCP環境でホスト名を使用してLUの割り当てを受ける方法の例

hostをキーとして、LU割り当てに使用するホスト名をBase64でエンコード(hostname1 → aG9zdG5hbWUx → YUc5emRHNWhiV1V4)を2回行い、値として設定してからWeb端末に接続します。

その後、従来の方法で接続を試みると、OpenFrame GWではdhcpPropertiesがyesに設定されていることを確認し、入力されたホスト名(hostname1)を使用してdhcp.propertiesからIPを取得します。そして、接続したWeb端末のIP(127.0.0.1)は無視し、取得したIP(192.168.11.23、192.168.11.31)を使用してLU割り当てを行います。

ホスト名を使用したLU割り当て方法は、上記の方法でWeb端末で接続した場合にのみ有効であり、RMIまたは3270エミュレーターで接続した場合は、従来のLU割り当て方法を使用します。

2.4. initScreen.txt

initScreen.txtファイルは、エディターを用いて端末に初めて接続するときに表示される画面構成を保存します。ファイルに作成された内容が端末画面に表示され、内容の最後の次に入力フィールドとカーソルが位置します。ファイルに以下のように設定すると、端末に同じ間隔と空白が表示されます。

ofgw.propertiesのvtamProperties項目を「yes」に設定してVTAMポート別に接続できるようにした場合は、vtam.propertiesの[PORT_NAME].initScreenに設定されたファイルの画面が表示されます。vtamProperties項目を「no」に設定した場合は、initScreen.txtの画面が表示されます。

@ THIS TERMINAL CONNECTED TO THE OPENFRAME GW



                ******.  *******.  ******.  **.   **.
               ********. *******. ********. **.   **.
               **....**. **...... **....**. **.   **.
               **.   **. **.      **.   ... **.   **.
               **.   **. *******. **.       **.**.**.
               **.   **. *******. **. ****. **.**.**.
               **.   **. **...... **. ****. **.**.**.
               **.   **. **.      **.  .**. ********.
               ********. **.      ********. ***..***.
                ******.. **.       *******. **..  **.
                 ......   ..        .......  ..    ..




@ ENTER COMMAND :

以下は、初期画面の例です。

figure init
初期画面

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>
        <charset>UTF-8</charset>
        <pattern>[%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSSS}][OFGW|%-24logger{0}][%-24t{1}][%.-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">
        <fileNamePattern>${USER_HOME}/ofgw-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
          <maxFileSize>300MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>30</maxHistory>
     </rollingPolicy>
     <encoder>
       <pattern>[%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSSS}][OFGW|%-24logger{0}][%-24t{1}][%.-1level] %msg%n</pattern>
     </encoder>
   </appender>
   <logger name="com.tmax.ofgw.region.LUManager" level="DEBUG" />
   <logger name="com.tmax.ofgw.Main" level="INFO" />
   <logger name="com.tmax.ofgw.region.Region" level="ERROR" />
   <logger name="com.tmax.webtnio" level="OFF" />
   <root level="DEBUG">
     <appender-ref ref="STDOUT" />
     <appender-ref ref="ROLLING" />
   </root>
</configuration>

以下は、プロパティ・ファイルの項目についての説明です。

項目 説明

<configuration>

scanとscanperiod項目を設定すると、動的にログレベルを変更することができます。

<appender>

LogBackで提供する形式でロガーのフォーマットを追加することができます。(イベントごとにログを記録することができます。)

  • ConsoleAppender : コンソールで表示される形式を提供します。

  • RollingFileAppender:ファイルの最大容量を設定し、索引でログファイルを作成します。

<charset>

ログファイルのエンコード形式を設定します。ofgw.propertiesのrmi.addLengthがyesに設定された場合は、その属性をSJISに設定する必要があります。(デフォルト値: UTF-8)

<property>

プロパティに設定した値は、変数のように使用することができます。このファイルでのUSER_HOMEは、ログファイルのパスとして使用されます。

<fileNamepatten>

ログファイル名のパターンを指定します。

デフォルト値は、日付形式と索引("%i")が追加されます。

<maxFileSize>

1ファイルあたりの最大容量を指定します。

<maxHistory>

ファイルのログを記録する最大日数を指定します。この値を超えると、自動的に最も古いログから順に削除されます。

<pattern>

表示されるログの形式を指定します。

<logger name>

<root>に設定されたログレベルとは別に、特定のクラスを指定してログレベルを指定します。

<root>

ログレベルを指定します。<appender>を追加して、該当のロガー・フォーマットのログレベルとして適用されます。

<logger name>が記述されていない場合、デフォルトで<root>に記述されたログレベルで各クラスのログレベルが設定されます。<logger name>が設定されたクラスの場合は、<root>に記述されたログレベルを上書きします。

上記の項目はデフォルトで提供される項目です。したがって、管理者が環境に合わせてカスタマイズして使用する必要があります。追加項目については、LogBack関連のガイドを参照してください。

3. OpenFrame GWの運用

本節では、OpenFrame GWの起動と終了およびログ・フォーマットについて説明します。

3.1. OpenFrame GWの起動と終了

OpenFrame GWを起動および終了する手順について説明します。

起動

JEUSのDAS上にOpenFrame GWをインストールした場合、DASを起動すると<lifecyle-invocation>属性によってOpenFrame GWも一緒に起動されます。DASを起動するスクリプトはstartDomainAdminServerであり、DASのドメイン名やJEUSを開始する権限を持つユーザー名とパスワードが必要です。

JEUS_HOME/binの下で実行する場合はこれらの値がすべて必要ですが、DASのDOMAIN_HOMEの下で実行する場合は、ドメイン名を省略することができます。

以下は、場所に応じたOpenFrame GWの起動です。

  1. startDomainAdminServerでサーバーを起動します。

    $JEUS_HOME/bin/startDomainAdminServer -domain <domain_name> -u <user_name> -p <password>

    または

    $JEUS_HOME/domains/<domain_name>/bin/startDomainAdminServer -u <user_name> -p <password>
  2. startManagedServerでサーバーを起動します。

    $JEUS_HOME/domains/<domain_name>/servers/<server_name>/bin/startManagedServer -u <user_name> -p <password>

    または

    $startManagedServer -domain <domain_name> -server <server_name> -u <user_name> -p <password> -dasurl <das_ip:das_baseport>
  3. jpsツールを使用して、DomainAdminServerBootstrapperとServerBootstrapperが正常に起動されたことを確認します。

    $jps
    23541 Jps
    22797 DomainAdminServerBootstrapper
    22981 ServerBootstrapper
終了

OpenFrame GWを終了するには、OpenFrame GWがインストールされているサーバーを終了する必要があります。

  1. stopServerコマンドを使用してManaged Serverサーバーを終了します。

    $JEUS_HOME/bin/stopServer -u <user_name> -p <password> -host <server_ip:server_baseport>
  2. stopServerコマンドを使用してDomainAdminServerサーバーを終了します。

    $JEUS_HOME/bin/stopServer -u <user_name> -p <password> -host <server_ip:server_baseport>

    WebAdmin、jeusadmin、またはコマンドを使用してJEUSを起動および終了することができます。本書では、UNIX環境での起動と終了についてのみ説明しています。他の方法についての詳細は、『JEUS ドメインガイド』または『JEUS WebAdminガイド』を参照してください。

起動と終了時のデータベース操作

OpenFrame GWは、OFM_BASE_VTAM_GATEWAY、OFM_BASE_VTAM_ACTIVE_LU表に情報を更新します。

起動時には、以前の異常終了により、情報が残っているかどうかを確認します。残っている場合はその情報を削除してから、新たに起動されるOpenFrame GW情報を更新します。一方、終了時には、ゲートウェイに接続されている端末の接続が切断されると同時に、そのサーバーに登録されているOpenFrame GWの情報と端末の情報をデータベースから削除します。

以下は、vtamadmツールを使用してOpenFrame GWの情報を確認する方法です。

  • ゲートウェイ情報の確認

    以下は、OpenFrame GWの情報を確認するコマンドの使用方法です。

    $ vtamadm -w
    
    VTAM Gateway List
    
    =================================================================================
    NO.  GATEWAY_NAME   CLID   IP_ADDR:PORT              NODENAME
    ---------------------------------------------------------------------------------
      1  ofgw_A            3   192.168.105.208:5668      NODE1
    =================================================================================
  • 端末LU情報の確認

    以下は、OpenFrame GWに接続されている端末のLU情報を確認するコマンドの使用方法です。

    $ vtamadm -l
    
    Active LU information connected to VTAM
    
    ==========================================================================================================
    NO.  LU        TYPE          CLID       NODENAME         IP_ADDR           LOGON_REGION    USERID
    ----------------------------------------------------------------------------------------------------------
      1  OSC00001  OSC REGION               NODE1
      2  OIVPTRM1  IBM-3278-2-E  5          NODE1            192.168.105.208   OSC00001        ROOT
      3  TSO       TSO                      NODE1
    ==========================================================================================================

vtamadmコマンドは、OpenFrameが提供するツールです。詳細については、OpenFrame Base『ツールリファレンスガイド』を参照してください。

オンライン・リージョンの起動と終了

基本的にOpenFrame GWは、OpenFrameのリージョン・サーバーの起動と終了に関係なく、起動状態を維持します。OpenFrame GWの実行中にオンライン・リージョンが起動されると、データベースから該当するリージョン情報を取得します。

終了時には、オンライン・リージョンに接続している(ログオンされたLU)端末の接続を切断し、データベースからも関連情報を削除します。

OpenFrameエンジンがすべて終了すると、Tmax接続が失われ、以下のようなログが発生します。

[2022-06-22T14:49:07.00976][OFGW|WebtChannelHandlerImpl  ][Main [server1-67]       ][I] Close connection for node[NODE1], clid=[246]
[2022-06-22T14:49:07.00982][OFGW|WebTerminal             ][Main [server1-67]       ][D] WebTerminal disconnect status=transaction_status_none
[2022-06-22T14:49:07.00984][OFGW|WebSocketEndPoint       ][Main [server1-67]       ][D] handleClose(...)
[2022-06-22T14:49:07.00985][OFGW|WebtChannelHandlerImpl  ][Main [server1-67]       ][I] System channel[NODE1] (clid=[246])

このとき、ofgw.properties設定ファイルのtmax.retrytimeに指定された時間が過ぎてから再接続を試みます。そのとき、OpenFrameが起動している必要があります。

3.2. ログ・フォーマット

以下は、logback.xmlにデフォルトで提供されるログ・フォーマットです。使用環境に合わせて変更して使用します。

[時間] [ログレベル] [スレッド] [ロガー] [メッセージ]
項目 説明

[時間]

「時間:分:秒.ミリ秒」形式で表示されます。

[ログレベル]

指定されたログレベルを表示します。OpenFrame GWでは、基本的にERROR、WARN、INFO、DEBUGの4つのレベルのログを表示します。

次は、各ログレベルについての説明です。

  • ERROR : モジュールが異常終了したか、エラーが発生した場合です。

  • WARN : モジュールの動作に問題があるが、GWの動作には影響を与えない場合です。

  • INFO : モジュールの動作の成功または失敗に関係なく、実行されたタスクの重要情報やタスクの開始と終了を通知する情報を表示します。

  • DEBUG : 各モジュールの動作について、INFOレベルより詳しい情報を表示します。

ログレベルの順は、ERROR < WARN < INFO < DEBUGです。上位レベルのログは、下位レベルのログを含みます。たとえば、ログレベルがINFOに設定されている場合は、ERRORとWARNレベルのログまで表示されます。

[スレッド]

現行のスレッド名です。ロギングするプロセス(サーバーまたはランチャー)とスレッド番号をハイフン(-)で区切って指定します。

[ロガー]

「ロガー名+{length}」です。lengthは最大桁数です。

[メッセージ]

ログメッセージのエイリアスです。

以下は、logback.xml設定ファイルにログの表示パターンを定義した例です。

<pattern>[%d{yyyy-MM-dd}T%d{HH:mm:ss.SSSSS}][OFGW|%-24logger{0}][%-24t{1}][%.-1level] %msg%n</pattern>
[2022-06-22T14:49:06.00599][OFGW|WebtChannelHandlerImpl  ][Main [server1-67]       ][D] Node name=NODE1
[2022-06-22T14:49:06.00599][OFGW|WebtChannelHandlerImpl  ][Main [server1-67]       ][D] Msg for OFGW
[2022-06-22T14:49:06.00600][OFGW|WebtChannelHandlerImpl  ][Main [server1-67]       ][D] Tmax msg type: tpsendto
[2022-06-22T14:49:06.00600][OFGW|VtamMessage             ][Main [server1-67]       ][D] [VtamMessage] vtam header: msgtype(aim(104)) clid(0) gwclid(0) regionclid(0)
[2022-06-22T14:49:06.00600][OFGW|VtamMessage             ][Main [server1-67]       ][D] [VtamMessage] msgflag : 0, ipaddr :
...
[2022-06-22T14:49:06.00650][OFGW|TranslateWorker         ][Worker-3 [server1-79]   ][D] Send to TransWorker channel there is something to work for terminal(id=13)
[2022-06-22T14:49:06.00651][OFGW|TransWorkerChImpl       ][Worker-3 [server1-79]   ][D] WorkerThread > TransWorker channel
[2022-06-22T14:49:06.00651][OFGW|TransWorkerChImpl       ][Worker-3 [server1-79]   ][D] writeQ for Web count=1
[2022-06-22T14:49:06.00654][OFGW|TransWorkerChImpl       ][Worker-3 [server1-79]   ][I] < Send to WebTerminal(id=13,len=2468)
[2022-06-22T14:49:06.00654][OFGW|TransWorkerChImpl       ][Worker-3 [server1-79]   ][D] < Send data(id=13):
...
[2022-06-22T14:49:06.00655][OFGW|TranslateWorker         ][Worker-3 [server1-79]   ][D] translation(id=13) done, WorkerThread > TransWorkChannel done

4. マルチ環境の構成

本節では、マルチ環境を構成する方法について説明します。

4.1. OpenFrame GWのマルチノード

負荷分散環境を構築するために、OpenFrame GWはOpenFrameにマルチノードを構成して運用することができます。以下は、その構成図です。

figure multinode
OpenFrame GWのマルチノードの運用

マルチノードを構成する場合、ofgw.propertiesファイルに以下のとおり設定します。ファイルの詳細については、ofgw.propertiesを参照してください。ただし、1つのOpenFrame GWから異なるOpenFrameにインストールされたノード環境への接続はサポートしていません。

tmax.node.list = NODE1,NODE2
tmax.node.NODE1.name = NODE1
tmax.node.NODE1.ip = 192.168.33.1
tmax.node.NODE1.port = 6300
tmax.node.NODE1.min = 2
tmax.node.NODE1.max = 6
tmax.node.NODE1.rate = 3
tmax.node.NODE1.timeout = 10000
tmax.node.NODE1.idletime = 30000

tmax.node.NODE2.name = NODE2
tmax.node.NODE2.ip = 192.168.33.1
tmax.node.NODE2.port = 6400
tmax.node.NODE2.min = 2
tmax.node.NODE2.max = 6
tmax.node.NODE2.rate = 3
tmax.node.NODE2.timeout = 10000
tmax.node.NODE2.idletime = 30000 … 생략

Tmaxは、OpenFrame GWとオンライン・リージョン間の通信および接続スケジューリングを担当し、OpenFrame GWは、業務スケジューリングを担当します。OpenFrame GWは、データベースに保存されている各オンライン・リージョンごとのマッピング情報を読み込んでスケジューリングします。

4.2. OpenFrame GWのマルチゲートウェイ

WASに複数のOpenFrame GWを実行する場合、以下の図のようにサーバーごとにOpenFrame GWを1つずつ実行することができます。

figure multigw
OpenFrame GWのマルチゲートウェイの例

上記のような環境を構成するために、JEUSサーバーの設定は、domain.xml(${JEUS_HOME}/domains/ <domain_name>/config)設定ファイルに以下のように記述します。domain.xmlの各項目についての詳細は、JEUSの設定ファイルを参照してください。OpenFrame GWのバイナリは、追加したJEUSサーバーのlib/applicationディレクトリに格納する必要があります。

<servers>
  <server>
     <name>server1</name>
     <lifecycle-invocation>
            <class-name>com.tmax.ofgw.Main</class-name>
            <invocation>
               <invocation-method>
                  <method-name>init</method-name>
               </invocation-method>
               <invocation-type>READY</invocation-type>
            </invocation>
     </lifecycle-invocation>
     <lifecycle-invocation>
            <class-name>com.tmax.ofgw.Main</class-name>
            <invocation>
               <invocation-method>
                  <method-name>shutdown</method-name>
               </invocation-method>
               <invocation-type>BEFORE_UNDEPLOY</invocation-type>
            </invocation>
         </lifecycle-invocation>
  </server>
  <server>
     <name>server2</name>
     <lifecycle-invocation>
            <class-name>com.tmax.ofgw.Main</class-name>
            <invocation>
               <invocation-method>
                  <method-name>init</method-name>
               </invocation-method>
               <invocation-type>READY</invocation-type>
            </invocation>
     </lifecycle-invocation>
     <lifecycle-invocation>
            <class-name>com.tmax.ofgw.Main</class-name>
            <invocation>
               <invocation-method>
                  <method-name>shutdown</method-name>
               </invocation-method>
               <invocation-type>BEFORE_UNDEPLOY</invocation-type>
            </invocation>
         </lifecycle-invocation>
  </server>
...省略
</servers>

サーバーの追加についての詳細は、『JEUS サーバーガイド』の「2.2.サーバーの追加」を参照してください。