#はじめに
WebSphere Application Server Liberty Base の環境整備のログです。
ここでは、WAS Libertyの環境整備と合わせて、JCA(JavaEE Connector Architecture)を使用して、CTG(CICS Transaction Gateway)経由でバックエンドCICSへのアクセスを試します。
CTG提供のIVT(Install Verification Test)用のアプリを動かすところまでやってみます。
ここでは主にLiberty部分の構成にフォーカスしています(CTG/CICSの詳細は割愛)。
使用している主なコンポーネントのバージョンは以下の通りです。
WebSphere Application Server Liberty Base V9.0.5 for Windows/Linux
CTG V9.1 for Linux
CICS TS V5.4 for z/OS
#参考情報
WebSphere Application Server Liberty Base
WebSphere Application Server Developer Tools for Eclipse
Java EE 7 Technologies
Java EE 8 Technologies
#事前確認
Libertyがサポートするフィーチャーについて。
以下を参照すると、WAS Libertyにはいくつかエディションがあって、WAS Liberty CoreはJCAのフィーチャーはサポートされないようです。
WebSphere Application Server Liberty Base - Libertyフィーチャー
なので、今回はWAS Liberty Baseを利用します。
##Eclipse導入
今回は日本語プラグインが含まれたPleiadesを使うことにします。
以下からダウンロード
Pleiades All in One ダウンロード
今回は、2020年4月時点の最新を使います。Eclipse2020(最新版/リリース 2020-03)を選択し、Java - Full Edition - 64bit をダウンロードします。
zip形式なので、適当なディレクトリに解凍すればOKです。
解凍したディレクトリ下のeclipse\eclipse.exeを実行して起動します。
##Liberty環境の整備
参考:
Liberty 開発者ツールおよび Liberty (オプション) のインストール
WebSphere Application Server Developer Tools for Eclipse - Installing from downloaded installation files
###Eclipse上にWebSpher Liberty Developer Toolの導入
以下のサイトから、上で導入したEclipse2020-03(4.15)用のToolをダウンロードします。
WebSphere Application Server Developer Tools Releases
ダウンロードしたファイル: libertytools-update-site_20.0.0.3.v20200309_1000.zip
Eclipseを起動し、ヘルプ-新規ソフトウェアのインストールを選択して、追加をクリック
###Libertyの導入
参考: 開発者ツールを使用した Liberty サーバーの作成
JavaEEパースペクティブを開き、サーバービューで、「...新規サーバーを作成して下さい」のリンクをクリック
Install from an archive or repositoryを選択し、java8を選択。
インストール先とRuntimeを選択。Runtimeは、ここでは製品提供のArchive Install用のjarを選択。
Base Bundle, Java EE 8 Full Platform Bundleを選択
###LibertyのログをUTF-8に変更
Libertyのログの文字コードは、WindowsだとデフォルトのSJISが使われます。今回はUTF-8で統一するので、そのための設定変更をします。
WAS Libertyの導入ディレクトリ下に、「usr¥servers¥server_name」というディレクトリができているので、そこにjvm.optionsというファイルを作成します。
-Dfile.encoding=UTF-8
##その他Eclipseの設定
###Eclipse Workspaceの文字コードがUTF-8であることを確認
ウィンドウ - 設定 - 一般から、テキスト・ファイル・エンコードがUTF-8になっていることを確認。
(デフォルトでUTF-8になってたが、違っていたら変更)
#CTG/CICS構成
以下の構成を行っておく。ここでは詳細は割愛
CTG/Linux --- (ECI over TCP/IP) --- CICS/zOS
CTGはリモート接続できるようにGateway Daemonを起動しておく。
また、CTG提供のIVT(Install Verification Program)を動かすために、CICS側にはCTG提供サンプルEC01というCOBOLのCOMMAREAプログラムを配置し、動く状態にしておく(コンパイル/リンクし、プログラム定義を作成)。
参考: JCA resource adapter installation verification test (IVT)
ちなみにここで使用している各コンポーネントのバージョンは以下の通り。
-
CTG側
RHEL 7.6
CTG V9.1 -
CICS側
z/OS V2.3
CICS TS V5.4
開発環境のLiberty(Windows)へのIVTセットアップ
参考:
Using JCA with the CICS TG in WebSphere Liberty Profile
WebSphere Application Server Liberty Base - Configuring and deploying a basic JCA ResourceAdapter
Libertyフィーチャーの追加
今回稼働させるアプリはCTG提供のIVT(Installation Verification Test)用のプログラムですが、これはEARファイルで提供されており、中身はJSP, Servlet, EJBで実装されています。かつ、JCAによりCTG/CICSアクセスが行われます。このアプリ稼働に必要なフィーチャーを追加しておきます。
server.xmlに、以下のフィーチャーを追加
jca-1.7, jndi-1.0, servlet-3.1, jsp-2.3, ejb-2.3, localConnector-1.0
server.xmlに追加される定義はこちら。
...
<featureManager>
<feature>jsp-2.3</feature>
<feature>localConnector-1.0</feature>
<feature>servlet-3.1</feature>
<feature>jca-1.7</feature>
<feature>jndi-1.0</feature>
<feature>ejb-3.2</feature>
</featureManager>
...
Resource Adapter設定
作成した開発環境用Libertyサーバーの構成ファイル(server.xml)に、CTG提供リソースアダプターを追加する。
CTGインストールディレクトリ下のdeployableから、cicseci.rarをコピーして、Liberty導入ディレクトリのuser\shared\resources\以下に配置する。
Eclipseのサーバービューからサーバー構成をダブルクリックし、リソースアダプターの定義を追加する。
server.xmlに追加される定義はこちら。
...
<resourceAdapter id="eciResourceAdapter" location="${shared.resource.dir}/cicseci.rar" autoStart="true" >
...
Connection Factory設定
server.xmlに以下の定義を追加。
...
<connectionFactory id="cicseci" jndiName="ECI" >
<properties.eciResourceAdapter connectionUrl="tcp://aha00527" portNumber="12006" serverName="CT54D4A1"/>
</connectionFactory>
...
JNDI名は"ECI"で固定(IVTで参照する名前に合わせる)。
connectionURLには、CTGのホスト名(アドレス)、portNumberはCTGがListenしているポート、serverNameには、ctg.iniに定義しているサーバー名(接続先CICSを示す)を指定する。
参考: ECI resource adapter deployment parameters
アプリケーションの設定
CTGインストールディレクトリ下のdeployable以下に提供されるIVT用のアプリECIIVT.earを、テスト用Liberty導入ディレクトリ下のuser\shared\apps\に配置する。
server.xmlにWebアプリケーションの定義を追加する。
server.xmlに追加される定義は以下の通り。
...
<enterpriseApplication location="${shared.app.dir}/ECIIVT.ear">
<classloader classProviderRef="eciResourceAdapter"></classloader>
</enterpriseApplication>
...
まとめ
最終的に作成されるserver.xml
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.3</feature>
<feature>localConnector-1.0</feature>
<feature>servlet-3.1</feature>
<feature>jca-1.7</feature>
<feature>jndi-1.0</feature>
<feature>ejb-3.2</feature>
</featureManager>
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>
<resourceAdapter id="eciResourceAdapter" location="${shared.resource.dir}/cicseci.rar" autoStart="true" >
</resourceAdapter>
<connectionFactory id="cicseci" jndiName="ECI" >
<properties.eciResourceAdapter connectionUrl="tcp://aha00527" portNumber="12006" serverName="CT54D4A1"/>
</connectionFactory>
<enterpriseApplication location="${shared.app.dir}/ECIIVT.ear">
<classloader classProviderRef="eciResourceAdapter"></classloader>
</enterpriseApplication>
</server>
開発環境用Liberty(Windows)でIVTプログラムの実行
※CTG/CICSは稼働済みの前提
コンソール確認
Java HotSpot(TM) 64-Bit Server VM バージョン 1.8.0_202-b08 (ja_JP) で、defaultServer (WebSphere Application Server 19.0.0.9/wlp-1.0.32.cl190920190905-0148) を起動しています
[AUDIT ] CWWKE0001I: サーバー defaultServer が起動されました。
[AUDIT ] CWWKZ0058I: アプリケーションの dropins をモニター中です。
[AUDIT ] CWWKI0001I: CORBA ネーム・サーバーが corbaloc:iiop:localhost:2809/NameService で使用可能になりました。
[AUDIT ] J2CA7001I: リソース・アダプター eciResourceAdapter が 2.174 秒でインストールされました。
[AUDIT ] CWWKT0016I: Web アプリケーションが使用可能です (default_host): http://localhost:9080/ECIIVTWeb/
[AUDIT ] CWWKZ0001I: アプリケーション ECIIVT が 1.216 秒で開始しました。
[AUDIT ] CWWKF0012I: サーバーは次のフィーチャーをインストールしました。[ejb-3.2, ejbHome-3.2, ejbLite-3.2, ejbPersistentTimer-3.2, ejbRemote-3.2, jdbc-4.1, mdb-3.2]。
[AUDIT ] CWWKF0011I: defaultServer サーバーは、Smarter Planet に対応する準備ができました。defaultServer サーバーは 9.340 秒で始動しました。
ブラウザからhttp://localhost:9080/ECIIVTWeb/
にアクセス
RUN IVTをクリック
1)~7)のメッセージが成功になっていればOK。
文字化けしているのは、ホスト側でDFHCNVを設定していないためなので、特に問題無し。
参考: 分散オペレーティング・システムでの Liberty のインストールとアンインストール
Installation Managerを使用したインストールを行う。
Installation Managerのインストール
Installation Managerは1.9.0以上のものが必要なので、以下から入手する。
https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm~Rational&product=ibm/Rational/IBM+Installation+Manager&function=all
Instllation Managerを使用したLibertyのインストール
Installation Managerの設定から、SDKとWAS Libertyのリポジトリファイルを追加
インストールのメニューを選択して、インストールするパッケージを選択
##Libertyサーバー作成
[root@test11 /opt/IBM/WebSphere/Liberty/bin]# ./server create server1
サーバー server1 が作成されました。
稼働確認
[root@test11 /opt/IBM/WebSphere/Liberty/bin]# ./server start server1
サーバー server1 を始動中です。
サーバー server1 がプロセス ID 27847 で始動しました。
ログ確認
process = 27847@10.0.2.15
********************************************************************************
[20/04/04 18:44:10:924 JST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager A CWWKE0001I: サーバー server1 が起動されました。
[20/04/04 18:44:16:170 JST] 00000001 com.ibm.ws.kernel.launch.internal.FrameworkManager I CWWKE0002I: カーネルは 6.036 秒 秒後に始動されました。
[20/04/04 18:44:16:582 JST] 0000002c com.ibm.ws.kernel.feature.internal.FeatureManager I CWWKF0007I: フィーチャー更新が開始しました。
[20/04/04 18:44:19:976 JST] 00000023 com.ibm.ws.app.manager.internal.monitor.DropinMonitor A CWWKZ0058I: アプリケーションの dropins をモニター中です。
[20/04/04 18:44:20:567 JST] 0000002e com.ibm.ws.tcpchannel.internal.TCPChannel I CWWKO0219I: TCP チャネル defaultHttpEndpoint が開始され、現在、ホスト localhost (IPv4: 127.0.0.1)、ポート 9080 の要求を listen しています。
[20/04/04 18:44:20:952 JST] 0000002c com.ibm.ws.kernel.feature.internal.FeatureManager A CWWKF0012I: サーバーは次のフィーチャーをインストールしました。[el-3.0, jsp-2.3, servlet-3.1]。
[20/04/04 18:44:20:954 JST] 0000002c com.ibm.ws.kernel.feature.internal.FeatureManager I CWWKF0008I: フィーチャー更新が 4.786 秒で完了しました。
[20/04/04 18:44:20:955 JST] 0000002c com.ibm.ws.kernel.feature.internal.FeatureManager A CWWKF0011I: server1 サーバーは、Smarter Planet に対応する準備ができました。server1 サーバーは 10.823 秒で始動しました。
実行環境のLiberty(Linux)へのIVTセットアップ
cicseci.rar、ECIIVT.rarをそれぞれ以下のディレクトリに配置する。
/opt/IBM/WebSphere/Liberty/usr/shared/resources/cicseci.rar
/opt/IBM/WebSphere/Liberty/usr/shared/apps/ECIIVT.ear
server.xmlを編集
<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.3</feature>
<feature>localConnector-1.0</feature>
<feature>servlet-3.1</feature>
<feature>jca-1.7</feature>
<feature>jndi-1.0</feature>
<feature>ejb-3.2</feature>
</featureManager>
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint id="defaultHttpEndpoint"
httpPort="9080"
httpsPort="9443" />
<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>
<resourceAdapter id="eciResourceAdapter" location="${shared.resource.dir}/cicseci.rar" autoStart="true" >
</resourceAdapter>
<connectionFactory id="cicseci" jndiName="ECI" >
<properties.eciResourceAdapter connectionUrl="tcp://localhost" portNumber="2006" serverName="CT54D4A1"/>
</connectionFactory>
<enterpriseApplication location="${shared.app.dir}/ECIIVT.ear">
<classloader classProviderRef="eciResourceAdapter"></classloader>
</enterpriseApplication>
</server>
基本、開発環境と同じ。
ただ、ここで使用している環境は、接続先CTGの宛先の見え方が開発環境とは違うため、connectionURL,portNumberの指定は変更しています。
#実行環境用Liberty(Linux)でIVTプログラムの実行
Libertyサーバーを起動後、ブラウザからhttp://localhost:9080/ECIIVTWeb/
にアクセス
1)~7)のメッセージが成功になっていればOK。
文字化けしているのは、ホスト側でDFHCNVを設定していないためなので、特に問題無し。