AS/400展望台

Integrated File Systemを知る



By Sharon Hoffman, Duke Communications International, Inc.
IFSの機能とその使い方をより深く理解するために。

2 年ほど前から、Integrated File System (IFS) に対する関心が高まると同時に、IFS が幅広く使用されるようになってきました。IFS の利用は拡大しています。これは iSeries ショップが、Domino や Java といった IFS を大幅に使用するツールで作成された各種アプリケーションを次々と組み込んでいるためです。また、使用するプログラミング言語に関係なく、今日の iSeries アプリケーションの多くが HTML ファイル、.GIF イメージ、ワード処理した文書などのストリーム・ファイルへのアクセスを必要としているからです。

なお、「AS/400統合・ファイルシステム入門」の表題で日本IBMがIFSのイロハを丁寧に説明しており、下記URLでご覧になれます。 http://www.jbooksrv.japan.ibm.co.jp/cgi-bin/master!request=menu!parms=!xu=SK888018/BOOKS/QBKJUH01/CCONTENTS

IBM は特に、ストリーム・ファイル・データと階層ディレクトリー構造を管理するよな設計を IFS に施しました。

技術的にはすべて ? AS/400 物理ファイル、ライブラリー、OS/400、PC ファイル、UNIX ファイル ? が IFS に格納されます。これは IFS が AS/400 オブジェクトと iSeries オブジェクトを QSYS.LIB (ライブラリー、ファイルなど) ファイル・システムまたは QDLS (文書、フォルダーなど) ファイル・システムのいずれかの一部として表示するためです。 しかし通常 IFS と言えば、「ルート」 (/) ファイル・システムと QOpenSys ファイル・システムを指します。これらは IFS の一部であり、PC (ほとんどの場合 Windows) および UNIX の情報を格納します。これらのオペレーティング・システムは iSeries のオブジェクト型アーキテクチャーとは大幅に異なるファイル・システムを使用するため、情報の格納のために IBM はIFS を作成する必要がありました。IFS は V3R1 のリリース以降、静かにしかし確実に機能拡張を行ってきました。たとえば、V5R1 では IFS ジャーナル処理の機能拡張や、論理区画と物理的な iSeries サーバー間で、IFS データを含む独立型補助記憶域プールを切り替える機能 (IASP: Independent Auxiliary Storage Pools) が実現されています。

IFS の意義

現在 IFS には 10 種類のファイル・システムがあります。NFS、QDLS、QFileSvr.400、QnetWare、QNTC、QopenSys、QOPT、QSYS.LIB、ルート、UDFS の 10 種類です (QLANSrv ファイル・システムは現在未サポート)。通常使用するファイル・システムはルート・ファイル・システム、QopenSys、QSYS.LIB です (すべてのファイル・システムの詳細は「IFS ファイル・システム」を参照)。

特にサーバー統合環境での iSeries サーバーの潜在能力を理解するときに役立つのが、IFS を概念として理解することです。しかし IFS を使用するアプリケーションが広まるにつれて、実践的な IFS の知識がより重要になってきます。(Domino のような) 作業に使用している特定のツールがどのように情報を格納するのか、またその情報をどのように管理するのか理解する必要があります。たとえば、iSeries で Domino を実行している場合、システム管理者は Domino と OS/400 の各セキュリティの連携状態を理解する必要があります。

OS/400 は IFS 管理用に CL コマンドとオペレーション・ナビゲーター・オプションをサポートしていますが、通常はファイル・システム固有のツールで IFS 情報を管理します (ルート・ファイル・システムのデータは Windows Explorer など)。例外として、バックアップのようなシステム管理タスクがあります。これらのタスクについては、iSeries の優れたシステム管理ツールを最大限に利用してすべてのサーバーとアプリケーションを集中管理します。

Sharon L. HoffmanはNEWS/400 の上級テクニカル・エディターで、as400network.com では「AS/400 展望台」というコラムを担当しています。1981 年以降 IBM のミッドレンジ・システムに携わり、幅広いアプリケーション開発のみならず技術的教育プログラムの立案・指導に当たってきました。
.....................................................................................................................................

IFS ファイル・システム

NFS (ネットワーク・ファイル・システム): UNIX アプリケーションが他のサーバーと情報を共用し、他のサーバーの情報にアクセス。
QDLS (文書ライブラリー・サービス): AS/400 の文書とフォルダーを格納。
QFileSvr.400: リモート AS/400 の情報を格納。
QNetWare: Novell NetWare サーバーがローカル情報とリモート情報両方にアクセス。
QNTC: 統合 xSeries サーバーまたは新たに発表された統合 xSeries アダプター付属の xSeries サーバーなど、Windows NT (4.0 以上) が動作するシステムの情報にアクセスする Windows NT Server ファイル・システム。
QOpenSys: UNIX ファイル・システム。ファイル名は大文字と小文字を区別。
QOPT (光ファイル・システム): 光メディアに格納されているデータを扱う場合に使用。
QSYS.LIB: フォルダーと文書を除いたすべての固有 AS/400 オブジェクトを格納。
root: QOpenSys と異なる命名規則 (大文字と小文字は区別しない) を使用する PC ファイル・システム。? DOS ファイル・システムをもとに標準 PC ディレクトリー構造ですべての PC データ・タイプを格納する。
UDFS (ユーザー定義ファイル・システム): システム管理者が定義し、補助記憶域プール (ASP) または独立型補助記憶域プール (IASP) に格納されている。
.........................................................................................................................................

■Java および IFS
by Dan Darnell

IFS でのディレクトリー作成方法、クラスパスの設定方法、IFS ファイルへのアクセス方法などを説明します。

AS/400 の Java アプリケーションを開発する場合、Integrated File System (IFS) のストリーム・ファイル・システムと Java を切り離して考えることはできません。初心者にとってストリーム・ファイル・システムのディレクトリーとは、Java ソースとクラス ファイルの格納場所です。IBM も AS/400 Developer Kit for Java (ADK) がサポートしているコードを格納する場合に、ストリーム・ファイル・システムを大幅に使用しています。

IFS は多くの型の AS/400 ファイル・システムおよび iSeries ファイル・システムを覆う傘のようなものですが、ここでは「IFS」はルート・ファイル・システムと QOpenSys ファイル・システムを指しています。これらは、レコード・ファイル・システムやデータベース・ファイル・システムではなく、階層ディレクトリー構造を備えたストリーム型ファイル・システムです (ディレクトリー構造の例は、「ルートおよび QOpenSys ファイル・システム機能」を参照)。

システム Java サポート

ADK は IBM が無償で提供している AS/400 ライセンス・プログラム・プロダクト (5769-JV1) です。ADK は IFS にランタイム・パッケージを内蔵し、AS/400 による Java 言語の固有サポートの中核を形成します。IBM は過去に ADK パッケージの格納場所を OS/400 のリリースが発表されるたびに移動させようとしました。デフォルトのクラスパスには、ランタイムでアプリケーションに必要なものすべてが入っており (これについては後に説明)、IBM がどこに何を格納しようとさほど重要ではありません。ADK を自分で検証する場合は /QIBM/ProdData/Java400 ディレクトリーから始めます。

IBM の Java 用 AS/400 ツールボックスも IFS に格納されていますが、中核となるADK とは異なる場所に格納されています。ツールボックスにより、Java プログラムは IFS のコマンド、プログラム、データ待ち行列、ファイルといった AS/400 リソースにアクセスできます。ツールボックスは /QIBM/ProdData/Http/Public/jt400/lib にあります。ありがたいことに、ツールボックスの格納場所はどのリリース大体同じです。Jt400.ZIP と Jt400.JAR の両ファイルにはそれぞれ、非圧縮 .ZIP 形式と圧縮 .JAR 形式でツールボックス・クラスが入っています。ツールボックスは、クライアントのワークステーションで実行しているアプリケーションで使用する場合がほとんどです。AS/400 をファイル・サーバーとしてクライアントから Jt400.ZIP/JAR ファイルにアクセスするか、各クライアント・ワークステーションに Jt400.ZIP/ JAR ファイルをダウンロードできます。

AS/400 上の Java

AS/400 または iSeries の Java プログラマーはソースやクラス・ファイルをルート・ファイル・システムまたは QOpenSys ファイル・システムの任意のディレクトリーに格納できます。CRTDIR (Create Directory) コマンドまたはいずれかのエイリアス (MD, MKDIR) で IFS にディレクトリーを作成できます。たとえば、次のコマンドを使用するとルート・ファイル・システムに /myapp ディレクトリーが作成されます。

CRTDIR DIR(`/myapp´)
IBM の VisualAge for Java などの開発ツールを使用して、Java コードをこのディレクトリーに割り当てることができます。本格的な開発環境の代わりに、グリーンスクリーンで AS/400 の Edit File (EDTF) ユーティリティーを使用して小規模な Java プログラムを入力できます。たとえば図 1 で小規模な Java アプリケーションを入力するには、次のように OS/400 コマンド行から Edit File ユーティリティーを起動します。

EDTF STMF('/myapp/ShowMeClasspath.java')
ソース・コードを保存する前に、ファイルのコード化文字セット ID (CCSID) を 00437 という PC Data CCSID に変更しなければならない場合があります。F15 (Services) を押して、ファイルの CCSID を変更してください。

クラスパスは、コンパイル時とランタイム時に Java がクラスの位置を設定するのに使用する環境変数です。クラスパスはコンパイラーと Java 仮想マシン (JVM) に IFS のクラスへのパスを提供します。クラスパスは IFS パス名で構成され、その中には複数の .ZIP ファイルまたは .JAR ファイルへのパスが入っています。

環境変数は OS/400 では、Java サポートのために大規模に作成された比較的新しい機能です。AS/400 の環境変数は PC とUNIX の世界ではアナログ・データです。これらのシステムでは AS/400 同様、環境変数はジョブで設定し、JVM といったシステム・プロダクトで後から照会できます。

OS/400 は環境変数の追加、変更、実行用のコマンドを備えています。次のコマンドで AS/400 にクラスパス環境変数を設定できます。

ADDENVVAR ENVVAR(CLASSPATH) VALUE('/myapp')
引き続き QShell で Run Java コマンドまたは Java コンパイルを使用する場合は、この事前に設定されたクラスパスを使用してクラスの位置を指定します。環境変数名は大文字と小文字を区別します。クラスパス環境変数は大文字で CLASSPATH になります。

図 1 の簡単な Java プログラムを見ると、AS/400 のジョブにおけるクラスパスの様子がわかります。図 2 は一般的な AS/400 (V4R4) で、/myapp ディレクトリーがクラスパスに追加された後のプログラムからの出力例を示しています。

前述したように、ADK にはシステム Java ファイルがあります。出力例でわかるように、AS/400 の重要な Java ランタイム・アーカイブ・ファイルがクラスパスの先頭に追加されています。このようにして個人のクラスパスへの設定内容とは無関係に、システム・クラスが確実に見つかります。

Qshell 環境

Java ランタイム環境同様、QShell 環境も IFS と密接に関連しています。シェルで実行する命令のタイプは主にストリーム・ファイル・システムのタイプです。たとえば、通常 AS/400 では Java ソース・コードのコンパイルはシェルから行います。

Qshell を起動するには、OS/400 コマンド行で STRQSH (Qshell の起動) コマンドを入力します。コマンド・プロンプトが表示されたらここからは、UNIX シェル・コマンドの世界です。Java コンパイルは javac コマンドで実行できます。ここでは、Java ソース・ファイルへの IFS パス名を次のように指定します。

javac /myapp/ShowMeClasspath.java
クラスパスに /myapp ディレクトリーを追加したため、次のコマンドで QShell からこの単純なアプリケーションを実行できます。

java ShowMeClasspath
(Qshell の Java 関連機能の詳細は、1999 年 8 月刊行の「AS/400 Qshell における Java コマンドの使用」を、QShell における Java および IFS 関数の自動化のヒントについては、1999 年 10 月刊行の「QShell スクリプト」を参照。)

Java における IFS ファイルへのアクセス

他の機能に加え、AS/400 Toolbox for Java により開発者は IFS でストリーム・ファイルの読み書きができます。Java 開発者は一般的に、コア java.io パッケージのストリーム入出力クラスを使い慣れています (File、File InputStream、FileOutputStream など)。ツールボックスでは IFS 固有のクラスが用意されていますが (IFSFile、IFSFile InputStream、IFSFile OutputStream など) すべてのメソッドはそれらと同系の java.io パッケージにあります。AS/400 の機能を最大限に利用するために、IFS 固有の入出力クラスにより補助的なメソッドが提供される場合があります。

ツールボックスにより IFS が直接サポートされるため、クライアントのドライブをマッピングせずに AS/400 のストリーム・ファイルにアクセスするよう、クライアント・アプリケーションを作成できます。IFS にアクセスできるブラウザ形式のアプレットを作成することもできます ? java.io パッケージ・クラスの作成は大変な作業ですが。

Java および IFS の共同作業

Java アプリケーションのサーバーへの展開、ストリーム・ファイル形式のソース・コードの編集、クラスパスの設定、Qshell でのアプリケーションのコンパイルと実行、クライアント・アプリケーションからのストリーム・ファイルへのアクセス、いずれの場合も IFS が必要です。Java が IFS とどのように相互作用するかをしっかり把握することで、これらのタスクをより簡単に達成できます。

本記事の一部は 1999 年「29th Street Press」発行の Java および AS/400 に関する彼の書籍「Practical Examples Using VisualAge for Java」から引用されています。

Dan Darnell は NEWS/400 のテクニカル・エディターであり、独立してコンサルタント業を営んでいます。
.........................................................................................................................................

ルート・ファイル・システムと QOpenSys ファイル・システムの機能

ルート・ファイル・システムと QOpenSys ファイル・システムでは、ファイル名に合計 256 文字と任意の拡張子を付けることができます。ルート・ファイル・システムと QOpenSys ファイル・システムは階層ディレクトリー構造を備えています。これは、次のようにディレクトリーを他のディレクトリーにネストして、ツリーを形成できることを意味します。

/myjava/
|
|?- subdir1/
|
|?- subdir2/
      |
      |?-subdir3/

ルート・ファイル・システムと QOpenSys ファイル・システムの大きな違いは、ファイル名に関して QopenSys は大文字と小文字を区別し、ルート・ファイル・システムは区別しないことです。
......................................................................................................................................

■WebSphere Application Server と IFS
by Jay Kelley 及び Vinny Luc

WebSphere を効率的に使用するには WAS ディレクトリー構造と IFS の理解が不可欠です。

IBM のWebSphere Application Server (WAS) により iSeries は、ダイナミックな Web ページを提供する場合の効果的な選択肢となります。Integrated File System (IFS) での WAS の編成方法を知ることは Web リソースを最大限に管理するために必要なスキルです。この記事では WAS のディレクトリー構造を説明します。

ディレクトリーの考察

WAS セットアップ・プログラムにより、IFS ルート・ディレクトリー配下の QIBM ディレクトリーにアプリケーション・サーバーがインストールされます。プロダクト自体は QIBM/ProdData/WebASAdv ディレクトリーにインストールされます。プロダクトが格納されるディレクトリーにはいくつかのサブディレクトリーがあります。そのうち 1 つは bin と呼ばれています。bin ディレクトリーにはいくつかのスクリプト・ファイルが格納されており、管理タスクに使用できます。たとえば、便利な Java プログラムに IPTest.class ファイルがあります (Java 仮想マシンでこの Java クラスを実行する必要があります)。このファイルを実行してホストの TCP/IP スタックをテストできます。その他に便利なスクリプトとして XMLConfig スクリプトがあります。このスクリプトは XML ファイルから管理リポジトリーへ、管理リポジトリーから XML ファイルへと WebSphere を構成できます。これは管理リポジトリー構成情報を保存またはトランスポートする場合に便利です。実際の管理リポジトリーは、QSYS ファイル・システムの EJSADMIN ライブラリーにある DB2 ユニバーサル・データベース (DB2 UDB) ファイルの集まりです。

lib ディレクトリーはシステム・ライブラリーです。このディレクトリーには WAS システムをサポートする JAR ファイルが格納されています。システムレベルまたはユーティリティーレベルの JAR ファイルをこのディレクトリー領域に追加できます。JAR ファイルを lib ディレクトリに追加すれば、JAR ファイルの内容を含めるために各 Web アプリケーションのクラスパスを構成する必要がありません。そのかわりに、単にクラスをこの領域に公開し、複数のアプリケーションでコードを共用します。ここは AS/400 Toolbox for Java といった共通関数を格納する論理域です。

QIBM/UserData/WebASAdv ディレクトリーには構成オブジェクトおよびユーザー・アプリケーション・オブジェクトが入っています。ユーザー・データ、特にアプリケーション・サーバーで実行する場合に作成する Web リソースは通常このディレクトリー下にセットアップされます。プロダクト自体とユーザー固有のリソースを分けることで、アプリケーションのリソースを破壊せずに容易にプロダクトの更新ができます。ProdData および UserData のこうした扱いは iSeries 固有であり、Windows NT ディレクトリー構造とは異なることに注意してください。

QIBM/ UserData/WebASAdv のサブディレクトリーである properties ディレクトリーには WAS で使用するいくつかの構成ファイルが入っています。Properties ディレクトリーの構成ファイルはアプリケーション・サーバーをサポートしています。たとえば、Open Servlet Engine 属性値は bootstrap.properties ファイルに格納されています。administration.properties ファイルは管理サーバーのジョブを制御します。このファイルには、管理サーバーのメモリー割り当てサイズ、クラスパス、IP ポートおよび他の属性が入っています。

QIBM /UserData/WebASAdv の別のサブディレクトリーである hosts ディレクトリーは、アプリケーション・サーバーで構成された仮想ホストを分割します。いったん WAS をインストールすると、default_host ディレクトリーが作成されます。このディレクトリーをインストール用に作成する実際の仮想ホスト・ディレクトリーに置き換えます。一般的には、仮想ホスト・ディレクトリー階層構造下に Web アプリケーションを公開します。

IFS のセキュリティー

IFS にあるいくつかの iSeries WAS ファイルはセキュリティー保護する必要があります。前述した properties ディレクトリーの IFS. Files には機密情報が含まれている場合があり、不当なアクセスから保護する必要があります。特にこれらのファイルには administrative.properties、sas.server.props、sas.server.props.future、および sas.client.props が入っています。たとえば、WAS でセキュリティーを有効にすると、sas.server ファイルにはユーザー ID とクリア・テキストのパスワードが入ります。デフォルトでは、これらのファイルは *EXCLUDE に設定される *PUBLIC 権限で作成されます。

WAS 下に Web アプリケーションをフレキシブルに構成できます。また、IFS の任意のディレクトリー領域に Web リソースを格納できます。しかしその場合、適切なオブジェクト権をカスタムの発行領域に確実に適用しなければなりません。たとえば、選択した任意の標準外発行ディレクトリーに適切なオブジェクト権が適用されるように QEJBSVR ユーザー・プロファイルを構成する必要があります。QEJBSVR ユーザーは、アプリケーション・サーバーが動作するユーザー・プロファイルです。QEJBSVR ユーザーには、要求されたどの Web リソースでも読み取り権限と実行権限 (*RX) が必要です。*PUBLIC 権限については、読み取りアクセス権限だけ与えられるようにします。

IFS 傘下

WebSphere は IFS にあり、IFS をコードおよびデータ両面から幅広く使用します。さらに IFS は WAS アプリケーションと構成データを格納します。アプリケーション・データもまた IFS (Java は拡張ストリーム・ファイル・クラス・ライブラリーを持っています) またはリレーショナル・データベースにあります。iSeries で WebSphere を効率的に使用するには、IFS、WAS ディレクトリー構造、IFS セキュリティーを理解することが不可欠です。

Jay Kelley 及び Vinny Luc は、Computer Applications Specialists, Inc のWebSphere 開発グループにおけるコンピューター・アプリケーションのスペシャリスト達です。



↑このページのトップへ
TOPPAGE

BELLDATA, Inc. Copyright reserved.