
はじめに
2024年10月2日リリースの Eclipse GlassFish 7.0.18 では、glassfish-embedded が実行可能JARになり、直接Webアプリケーションを起動できるようになりました。
以下のようにWARを引数に起動すれば、Webアプリケーションが動きます。
java -jar glassfish-embedded-all.jar app.war
サーバーは exit quit、または Ctrl + C で終了します。
デフォルトでは8080ポートで起動し、HTTPSリスナーは無効になっています。ポートを指定する場合は以下のように指定します。
java -jar glassfish-embedded-all.jar --httpPort=8090 app.war
その他、プロパティファイルやコンフィグファイルで設定を渡したり、asadmin コマンドを直接渡すこともできます。
現行バージョンは glassfish-embedded-all-7.0.18.jar からダウンロードできます。対象のアプリケーションは javax.* から jakarta.* に変更済みのものが必要です(tomcat-jakartaee-migrationなどの変換ツールも利用できます)。
java -jar glassfish-embedded-all-7.0.18.jar sample.war
glassfish-embedded の設定
カレントディレクトリに以下を準備することで、その内容が自動的に読み取られます。
- glassfish.properties ファイル:プロパティファイル
- domain.xml ファイル:ドメイン設定ファイル
- autodeploy ディレクトリ:起動時にディレクトリ内のファイルやディレクトリをアプリケーションとしてデプロイ
- glassfish-domain ディレクトリ:ディレクトリがドメインディレクトリとして使用される
これらをカレントディレクトリ以外に置く場合はコマンドラインオプションで明示的に指定します。
コマンドラインオプションは以下になります。
java -jar glassfish-embedded-all.jar
[--properties=FILE]
[-p=PORT, --httpPort=PORT, --port=PORT] [--httpsPort=PORT_NUMBER]
[--domainConfigFile=FILE]
[--domainDir=DIRECTORY, --instanceRoot=DIRECTORY]
[--noListener, --noPort]
[--autoDeployDir=DIRECTORY]
[--logLevel=LEVEL]
[--logProperties=FILE]
[--noInfo]
[--help]
[applications or admin commands...]
glassfish.properties ファイル
glassfish.properties ファイルは以下のようなプロパティファイルです。
port=8090 deploy.app=myapp.war
このファイルでは以下の設定を指定できます(--properties=FILE オプションを繰り返すことで、複数のプロパティファイルを指定できます)。
- オプション名をキーとするコマンドラインオプション
deploy.接頭辞で始まり、その後に任意のテキストが続くキーで、起動時にデプロイするアプリケーションの指定となるcommand.接頭辞で始まり、その後に任意のテキストが続くキーでは、起動時に実行するコマンドとして扱われる- GlassFish Embedded がサポートするすべてのプロパティ
コマンドラインオプションは、ハイフンを除いた形で指定出来ます。
例えば --port=8090 は、glassfish.properties で port=8090 として指定します。
アプリケーションのデプロイには、コンテキストルートを app とし myapp.war ファイルをデプロイするには deploy.app=myapp.war として指定します。
最大スレッドプールサイズを変更する場合、asadmin コマンドで set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=4 のように指定します。これをプロパティファイルで指定する場合は command.任意キー=set server.略.max-thread-pool-size=4 として指定します。
properties プロパティを指定することで、別ファイルを指してプロパティをロードすることもできます。
基本的には glassfish.properties ファイルを使って設定するのが良いでしょう。
glassfish-embedded のオプション詳細
| オプション | 説明 |
|---|---|
--properties=FILE |
指定されたプロパティファイルを使用する |
-p=PORT,--httpPort=PORT,--port=PORT |
HTTPリスナーを指定されたポートにバインドする。設定されていない場合、HTTPリスナーは、--noListener引数によって無効化されない限り、デフォルトでポート8080にバインドされる |
--httpsPort=PORT_NUMBER |
HTTPSリスナーを指定されたポートにバインドする。設定しない場合、HTTPSリスナーはデフォルトで無効 |
--domainConfigFile=FILE |
GlassFishを実行するドメイン設定ファイル(domain.xml)の場所を設定する |
--domainDir=DIRECTORY,--instanceRoot=DIRECTORY |
GlassFishを実行するインスタンスルート(ドメインディレクトリ)を設定する |
--noListener --noPort |
リスナー、ポートを無効にする。デフォルトで有効になっており、ポート8080にバインドされている |
--autoDeployDir=DIRECTORY |
このディレクトリにあるファイルやディレクトリは、コマンドラインで指定されたかのように、アプリケーションとして(ランダムな順番で)デプロイされる |
--logLevel=LEVEL |
すべてのロガーのログレベルを指定値に設定する |
--logProperties=FILE |
ファイルFILEからロギング・プロパティを設定する |
--noInfo |
情報メッセージを表示しない |
--help |
ヘルプ情報を表示する |
applications or admin commands... |
アプリケーションまたは管理コマンドを指定する |
ハイフンで始まらない引数は、以下のように扱われます
ファイルまたはディレクトリの場合は、アプリケーションとして起動時にデプロイされます。起動時にデプロイされる唯一のアプリケーションであれば、ルートコンテキスト「/」の下にデプロイされ、そうでない場合は、ファイル名またはデプロイメント記述子から派生したルートコンテキストの下にデプロイされる
それ以外の場合、引数は GlassFish 管理コマンド(asadminコマンド)として実行されます。個々のコマンドにスペースが含まれる場合は、引用符で囲む必要がある
コマンド例
アプリケーションをデフォルト設定で起動
java -jar glassfish-embedded-all.jar app.war
ポート指定でアプリケーションを起動
java -jar glassfish-embedded-all.jar --httpPort=8090 app.war
起動時にカスタムデプロイコマンドを実行
java -jar glassfish-embedded-all.jar "deploy --contextroot=/app app.war"
コマンドラインから2つのアプリケーションを実行。
java -jar glassfish-embedded-all.jar app1.war app2.war