GlassFish のスクリプトまとめ

この記事は GlassFish Advent Calendar 2014、5 日目の記事です。昨日は「これだけは知っておきたいasadminの使い方」と題して、asadmin のサブコマンドで最低限知っておきたいものをご紹介しました。

本日は as-install-parent/bin および as-install/bin 以下に配置されているスクリプトをまとめてみます。なお as-install-parent は glassfish4 までのパスを示し、例えば Windows の C ドライブ直下に glassfish4 を展開した場合は C:\glassfish4、同様に Unix/Linux の /opt 以下に展開した場合は /opt/glassfish4 となります。また as-install はそれぞれ C:\glassfish4\glassfish、/opt/glassfish4/glassfish となります。

as-install-parent/bin 以下のスクリプト

as-install-parent/bin 以下には、GlassFish Server のスクリプトが格納されています。それぞれ拡張子 .bat が付くものとそうでないものがあり、前者は Windows のバッチファイル、後者は Unix/Linux のシェルスクリプト(Bourne Shell 系)です。どちらも動作環境が異なるだけで同じ働きをします。

as-install-parent/bin 以下のスクリプト
スクリプト名分類説明
asadmin サーバー操作 CLI のサーバー管理ツール;サブコマンドを受け取り、Nucleus の CLI Framework に渡す。
pkg パッケージ管理 CLI のパッケージ管理ツール;OpenSolaris および Solaris 11 で採用されている IPS と機能的には同等で、GlassFish のモジュール(OSGi バンドル)すべてを追加・削除可能。Python で実装されている部分があるため、初回起動時に Python インタープリターがインストールされる。
updatetool パッケージ管理 GUI のパッケージ管理ツール;Swing で実装されたパッケージ管理ツールで、管理コンソールのパッケージ管理では追加・削除できないモジュール(OSGi バンドル)も操作できる。内部的に IPS を使用していると思われ、諸注意は pkg と同様。

各スクリプトの使い方については GlassFish のリファレンスマニュアルを参照してください。

as-install/bin 以下のスクリプト

as-install/bin 以下には Nucleus 由来のスクリプトが格納されています。こちらも拡張子 .bat が付くものとそうでないものがあります。

as-install/bin 以下のスクリプト
スクリプト名分類説明
asadmin サーバー操作 CLI のサーバー管理ツール;サブコマンドを受け取り、Nucleus の CLI Framework に渡す。
startserv サーバー操作 asadmin start-domain と等価。
stopserv サーバー操作 asadmin stop-domain と等価。
appclient EJB 関連 Application Client Container を実行する。具体的には RMI-IIOP 経由で Remote EJB などを呼び出す際に利用する。最近の Java EE では滅多にお目にかかることはない。詳細は @nekop 氏のブログ記事を参照のこと。
package-appclient EJB 関連 appclient で実行するクライアント JAR をパッケージする。appclient 同様、最近の Java EE では滅多に使用しない。
capture-schema EJB 関連 データベースのスキーマを取り込むためのツール。Entity Bean 開発に利用するようだが、Entity Bean が Java EE 7 仕様から削除されているため、新規開発では使用しないこと。
wscompile Web サービス WSDL からスタブを生成する。
wsdeploy Web サービス JAX-RPC で実装した Web サービスをデプロイする。JAX-WS では使用しない。また JAX-RPC は Java EE 7 仕様から削除されているため、新規開発では使用しないこと。
wsgen Web サービス JAX-WS エンドポイントの Java クラスから WSDL を生成する。
wsimport Web サービス WSDL から JAX-WS クライアントに必要な Java クラスを生成する。
schemagen JAXB Java クラスから XML Schema を生成する。
xjc JAXB XML Schema から Java クラスを生成する。
jspc その他 JSP の事前コンパイルを行うときに使用する。パフォーマンス要求が厳しいシステムでは使う場合がある。

各スクリプトの使い方については GlassFish のリファレンスマニュアルを参照してください。

なぜ GlassFish のスクリプトは分散しているのか?

GlassFish のインストールのうち、as-install 以下は Nucleus と Java EE リファレンス実装が含まれます。そのため、Nucleus を制御するスクリプトと Java EE に付属するスクリプトについては、as-install/bin に配置されています。

GlassFish は、その基盤である Nucleus と Java EE リファレンス実装だけではなく、同梱されている MQ(OpenMQ)、データベース(Java DB)、サーバーのパッケージ管理ツール(pkg、updatetool)などの集合体です。これらは as-install-parent 以下に、Nucleus や Java EE とは区別できる形で配置されています。例えばパッケージ管理に関連するスクリプトは GlassFish の一部ですが Java EE には含まれないため、as-install-parent/bin に含まれているわけです。

as-install-parent/bin/asadmin と as-install/bin/asadmin は同一のものです。ただし、前者は GlassFish Server の CLI 管理ツールとして配置されているのに対し、後者は Nucleus の CLI 管理ツールとして配置されています。GlassFish のブートストラップの設計上、両者は結果として同じ役目を果たすことになりますが、「そこにいる理由」は異なります。

明日は GlassFish 4.1 を使用するに当たって知っておいていただきたいことについてお話します。