環境設定と運用

本章では、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
                       |---- META-INF
                           |---- persistence.xml
                       |---- logback.xml
                       |---- *.jar
                       +---- UninstallerData
                       +---- scripts
                       +---- webterminal
                       +---- ofgwconf
                           |---- ofgw.properties
                           +---- cpm
                           +---- license
                           +---- initScreen
                               |---- initScreen.txt
                           |---- vtam.properties
                           |--- dhcp.properties
  • servers/<server_name>/lib/application

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

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

    META-INF/persistence.xml

    JPAを使用するために、エンティティとJPA関連のオプションを定義します。詳細については、persistence.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 アプリケーション&デプロイメントガイド』の「アプリケーション管理のディレクトリ構造」を参照してください。

2. OpenFrame GWの設定ファイル

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

2.1. persistence.xml

persistence.xmlにOpenFrame GWで使用されるJPAエンティティとオプションを定義します。

以下は、プロパティファイルの設定例です。

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
    <persistence-unit name="ofgw" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>="
        <non-jta-data-source>DATASOURCE_NAME</non-jta-data-source>
        <!-- Don't modify these class names -->
        <class>com.tmax.ofgw.entity.vtam.LuMap</class>
        <class>com.tmax.ofgw.entity.vtam.LuGroup</class>
        <class>com.tmax.ofgw.entity.vtam.ActiveLu</class>
        <class>com.tmax.ofgw.entity.vtam.LuStatus</class>
        <class>com.tmax.ofgw.entity.vtam.Gateway</class>
        <class>com.tmax.ofgw.entity.osc.OscTerminalInfo</class>
        <class>com.tmax.ofgw.entity.osc.OscTran2svc</class>
        <class>com.tmax.ofgw.entity.osc.OscConfig</class>
        <class>com.tmax.ofgw.entity.osc.OscKey2tran</class>
        <class>com.tmax.ofgw.entity.osc.OscNetName</class>
        <class>com.tmax.ofgw.entity.osc.OscSACEE</class>
        <class>com.tmax.ofgw.entity.osc.OscCspg</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.use_sql_comments" value="true"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

以下は、各項目についての説明です。

項目 説明

<persistence-unit>

OpenFrame GWの内部でJPAを使用するためのIDです。この設定を任意に変更した場合、OpenFrame GWが誤動作する可能性があるため、注意が必要です。

<transaction-type= "RESOURCE_LOCAL">

OpenFrame GWの内部でJPAを介してデータベースにアクセスするために、EntityManagerFactoryを直接定義して使用します。この設定を任意に変更した場合、OpenFrame GWが誤動作する可能性があるため、注意が必要です。

<provider>

JPAプロバイダとしてHibernateを設定します。他のJPAプロバイダに変更する場合、OpenFrame GWが誤動作する可能性があるため、注意が必要です。

<non-jta-data-source>

OpenFrame GWがデプロイされたサーバーに登録されているデータソースのいずれかを設定します。OpenFrame GWが接続するデータベースを選択するオプションです。

<class>

OpenFrame GW内で定義されたEntityクラスのパスを指定します。この設定を任意に変更した場合、OpenFrame GWが誤動作する可能性があるため、注意が必要です。

<property name="hibernate.dialect">

JPAがデータベースへのアクセス時に使用する文法を設定します。

Tiberoは、Oracle文法に従うため、「org.hibernate.dialect.Oracle10gDialect」に設定します。この設定を任意に変更した場合、OpenFrame GWが誤動作する可能性があるため、注意が必要です。

<property name="hibernate.format _sql">

JPAがSQLをロギングする際、出力形式を設定できます。

<property name="hibernate.use_ sql_comments">

JPAがSQLを出力する際、コメントも一緒に出力するように設定します。

<property name="hibernate.show_ sql">

JPAが発行したSQLを出力するように設定します。

2.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>
        <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" />
   <logger name="org.hibernate" level="INFO" />
   <root level="DEBUG">
     <appender-ref ref="STDOUT" />
     <appender-ref ref="ROLLING" />
   </root>
</configuration>

以下は、各項目についての説明です。

項目 説明

<configuration>

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

<appender>

LogBackが提供する形式でロガー形式を追加できます。(Eventごとにログを記録することを可能にする)

  • ConsoleAppender : コンソールに出力される形式を提供する。

  • RollingFileAppender : ファイルの最大容量を設定して、インテックスでログファイルを生成します。

<charset>

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

<property>

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

<fileNamepatten>

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

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

<maxFileSize>

ファイルごとに最大容量を設定します。

<maxHistory>

ファイルのログを保持する最大日数を指定します。指定した値に到達すると、最も古いログから順に削除されます。

<pattern>

出力されるログの形式を設定します。

<logger name>

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

<root>

ログレベルを設定して<appender>を追加し、そのロガーのログレベルで出力されます。<logger name>が記述されていない場合は、基本的に<root>に記述されているログレベルが各クラスのログレベルとして設定され、<logger name>が設定されたクラスの場合は、<root>に記述されたログレベルを上書きします。

この項目は基本的に提供される項目であり、管理者が環境に合わせてカスタマイズする必要があります。追加の項目については、logbackの関連ガイドを参照してください。

2.3. ofgw.properties

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

gw.name =gateway_name
lu.port = port_no
lu.autoalloc = {yes|no}
vtamProperties = {yes|no}
dhcpProperties = {yes|no}
debug.time = {yes|no}
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}

webAIM.proc = webAIM_procedure_name
webAIM.smqn = webAIM_smqn_name

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

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

同じOpenFrameに接続するゲートウェイ名は、必ず一意でなければなりません。

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

デバッグ時に、パフォーマンスをチェックするために使用するタイムログを出力するかどうかを設定します。

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)

webAIM.proc

HTTPリクエストを通じてwebAIMと通信する際、データを送信するAIMのプロシージャを設定します。

webAIM.smqn

HTTPリクエストを通じてwebAIMと通信する際、データを送信するAIMのSMQNを設定します。

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通信を参照してください。

  3. webAIMを介してHTTP通信を使用するには、Web端末のWEB-INFのweb.xmlにservlet-mappingを設定する必要があります。

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

gw.name = ofgw
lu.port = 5556
lu.autoalloc = yes
debug.time = no
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

webAIM.proc = aadproc
webAIM.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.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
初期画面の例

2.5. 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.6. 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

ofgw.propertiesのdhcpPropertiesがyesで、dhcp.propertiesに何の値も設定されていない場合、DBのOFM_BASE_VTAM_DHCPテーブルの情報を参照します。

  • 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割り当て方法を使用します。

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 -server <server_name> -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ガイド』を参照してください。

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

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『ツールリファレンスガイド』を参照してください。

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

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

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

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

[2022-06-22T14:49:07.00976][OFGW|WebtChannelHandlerImpl  ][Main                    ][I] Close connection for node[NODE1], clid=[246]
[2022-06-22T14:49:07.00982][OFGW|WebTerminal             ][Main                    ][D] WebTerminal disconnect status=transaction_status_none
[2022-06-22T14:49:07.00984][OFGW|WebSocketEndPoint       ][Main                    ][D] handleClose(...)
[2022-06-22T14:49:07.00985][OFGW|WebtChannelHandlerImpl  ][Main                    ][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                    ][D] Node name=NODE1
[2022-06-22T14:49:06.00599][OFGW|WebtChannelHandlerImpl  ][Main                    ][D] Msg for OFGW
[2022-06-22T14:49:06.00600][OFGW|WebtChannelHandlerImpl  ][Main                    ][D] Tmax msg type: tpsendto
[2022-06-22T14:49:06.00600][OFGW|VtamMessage             ][Main                    ][D] [VtamMessage] vtam header: msgtype(aim(104)) clid(0) gwclid(0) regionclid(0)
[2022-06-22T14:49:06.00600][OFGW|VtamMessage             ][Main                    ][D] [VtamMessage] msgflag : 0, ipaddr :
...
[2022-06-22T14:49:06.00650][OFGW|TranslateWorker         ][Worker-3                ][D] Send to TransWorker channel there is something to work for terminal(id=13)
[2022-06-22T14:49:06.00651][OFGW|TransWorkerChImpl       ][Worker-3                ][D] WorkerThread > TransWorker channel
[2022-06-22T14:49:06.00651][OFGW|TransWorkerChImpl       ][Worker-3                ][D] writeQ for Web count=1
[2022-06-22T14:49:06.00654][OFGW|TransWorkerChImpl       ][Worker-3                ][I] < Send to WebTerminal(id=13,len=2468)
[2022-06-22T14:49:06.00654][OFGW|TransWorkerChImpl       ][Worker-3                ][D] < Send data(id=13):
...
[2022-06-22T14:49:06.00655][OFGW|TranslateWorker         ][Worker-3                ][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 サーバーガイド』の「サーバーの追加」を参照してください。