Jakarta EE 10環境を提供するアプリケーションサーバーの Payaraを Windows Server 2022にインストールします。
ここのホームページでは Linuxを主としてやっているんですが、仕事という面で言うと思いの外オンプレの環境が多く、更には Windowsサーバーが結構多いのです。
Linux(Ubuntu Server)での Payaraについては「Jakarta EE 10 の環境構築 (Payaraインストール)」に書いています。
Payaraの使い方は Linuxも Windowsも変わるものではないですが、Windowsサーバーで Jakarta EE 10したいという人のために、Windows版のインストール手順を書いておきます。
決してネタ切れのために同じネタでおかわりをしようというものではありません。
鼻息('oo`)は特に荒くなってはいません。
早速インストールしましょう。
Windows Server 2022のインストールについては「Windows Server 2022 インストール」に書いています。
Windows Server 2022にログインできるところからスタートします。
2023年8月14日時点で Payaraのバージョンは 6.2023.7 です。
Payara 6の 2023年7月バージョンということだと思います。
Payaraは Jakarta EEのアプリケーションサーバーですので、当然ながら Java SEがあることが前提となります。
Payaraの当該バージョンは Java 17に対応していますので、Oracleのサイトからダウンロードしてインストールしておきます。
Java Downloads
ここにある [x64 MSI Installer] が Windows用です。
ダウンロードが完了すると [jdk-17_windows-x64_bin.msi]ファイルができました。
これをダブルクリックすればインストールできます。
ではPyaraの環境構築をしましょう。
まずダウンロードをします。
商用の Enterprise Editionと、無償で使える Community Editionがありますので、後者を使います。
Payara Platform Community Edition
ダウンロードサイトに行くと一番上に英語版のダウンロードリンクが出てきますが、日本語対応している ML版(Multi-Language)が下の方にありますのでそれがダウンロードの対象になります。
[Payara ML 6.2023.7 (Multi-Language Full)] のDownloadを押します。
ダウンロードが完了すると [payara-ml-6.2023.7.zip]ファイルができました。
この圧縮ファイルを解凍すると [payara-ml-6.2023.7]フォルダの下に [payara6]フォルダができますので、これを [C:¥Program Files¥]フォルダの下に移動しました。
====== ここで使っているバージョン特有の問題と対策 ここから ======
Payara 6.2023.7 と JDK 17.0.8の組み合わせで起こる問題で、2023年7月18日リリースの JDK 17.0.8での実装された新機能のため Payaraが起動時にエラーで停止してしまうようになった事象への暫定の対応策ですので、Payara 6の後続バージョンでは解消されている可能性があります。
以下に書いている通り、Payaraの開発チームが対応策を検討中とのことです。
Error starting Payara Community Server 6.2023.7 from Netbeans
Payara 6.2023.7 start-domain failed
まずはこの対応作は無しでやってみて下さい。
それでダメなら以下をやってみましょう。
Java起動時に [-Djdk.util.zip.disableZip64ExtraFieldValidation=true] というオプションを与えるのですが、「disable」と名前に付いているものを「true」に設定するという意味なので、何か zip圧縮周りの機能を殺しておくという意味なのでしょう。
Payara 6起動時に読み込まれるファイルへの書き方が記載されていましたので、その通りにします。
ここでインストールした環境では
[C:¥Program Files¥Payara6¥grassfish¥domains¥domain1¥config¥domain.xml]ファイルが修正対象になります。
[<java-config] 〜 [</java-config] で囲まれている箇所があります。
<java-config classpath-suffix=...>
.....
<jvm-options>-Dxxxxxxxxxxxxxxxxxxxxxxxx</jvm-options>
</java-config>
ここが Java起動時にパラメーターをオプションとして与える箇所なので、以下のように 1行足してやります。
<java-config classpath-suffix=...>
.....
<jvm-options>-Dxxxxxxxxxxxxxxxxxxxxxxxx</jvm-options>
<jvm-options>-Djdk.util.zip.disableZip64ExtraFieldValidation=true</jvm-options>
</java-config>
私の環境でもこの問題は起きて、確かに上の対応策で回避することができました。
あくまで回避策であって本対応ということでは無さそうですから、続報を待つと良いと思います。
====== ここで使っているバージョン特有の問題と対策 ここまで======
Windowsサーバーの起動時に Payaraが自動で起動するよう、Windowsサービスとして Payaraを登録します。
Payaraを制御するコマンド(asadmin)の Windows版が、
[C:¥Program Files¥payara6¥bin¥asadmin.bat] というバッチファイルになります。
このバッチファイルに [create-service] を引数として与えると Windowsサービスの登録をしてくれます。
更に引数として自動起動対象のドメイン名(最初は [domain1] しかない)も指定します。
C:\Program Files\payara6\bin>asadmin.bat create-service domain1
The Windows Service was created successfully. It is ready to be started. Here are the details:
ID of the service: domain1
Display Name of the service:domain1 Payara Server
Server Directory: C:\Program Files\payara6\glassfish\domains\domain1
Configuration file for Windows Services Wrapper: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.xml
The service can be controlled using the Windows Services Manager or you can use the
Windows Services Wrapper instead:
Start Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe start
Stop Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe stop
Restart Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe restart
Uninstall Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe uninstall
Install Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe install
Status Command: C:\Program Files\payara6\glassfish\domains\domain1\bin\domain1Service.exe status
You can also verify that the service is installed (or not) with sc query state= all
windows.services.uninstall.good=Found the Windows Service and successfully uninstalled it.
For your convenience this message has also been saved to this file: C:\Program Files\payara6\glassfish\domains\domain1\PlatformServices.log
Command create-service executed successfully.
Windowsサービスとして登録できました。
※このウィンドウは後でまた使いますので、消さずにおいて下さい。
サービス登録の確認と Payaraの起動をします。
Windowsのスタートメニューから、[Windows 管理ツール] - [サービス] と選択します。
[domain1 Payara Server] という名前のサービスになっていました。
この行で右クリックすると出てくるメニューから [開始] を選択します。
[状態] が [実行中] になりました。
これで Payara 6が動き出しているはずです。
※この画面も後で使いますので残しておいて下さい。
デフォルトだとネットワーク越しに管理画面(管理コンソールと言います)にアクセスさせないようになっていますのでこれを解除します。
次のドキュメントに解除方法の記載があります。
Rest Monitoring (の Rest Monitoring Security段落)
Enabling secure admin can be done by first configuring the admin password with the change-admin-password command, then using the enable-secure-admin command. Enabling secure admin requires a server restart.
具体的には再びコマンド画面で [csadadmin.bat] を使います。
[admin]ユーザーの初期パスワード設定をします。
C:\Program Files\payara6\bin>casadmin.bat change-admin-password
Enter admin user name [default: admin]>そのままEnterキー ← [admin]から変えられるようですが、ここでは[admin]のままにしておきます。
Enter the admin password>そのままEnterキー ← 最初はパスワードがありません。
Enter the new admin password>[admin]ユーザーの新パスワード
Enter the new admin password again>[admin]ユーザーの新パスワードをもう一回
Command change-admin-password executed successfully.
[Serure Admin]とやらを[enable]にしているようです。
C:\Program Files\payara6\bin>asadmin.bat enable-secure-admin
Enter admin user name> admin
Enter admin password for user "admin">[admin]ユーザーの新パスワード
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
ドメインの再起動をすると有効になると書いてあるので、上の Windowsサービスの画面でメニューから [再起動] を選んでやります。
これで Windows Server 2022以外からのアクセスができるはずです。
私の環境では [http://Win2022:4848] になります。
普段遣いの Lubuntu 22.04.3の Firefoxでアクセスしてみました。
最初は [admin]ユーザーと上で設定した初期パスワードでログインします。
Linuxでやったときと同じ画面ですね。
途中で JDKとの兼ね合いでハマりましたけど、どうにか Windowsサーバーでも Payara 6を立ち上げることができました。
Linuxの方ではこの後でサーブレットを動かす手順まで書いていますので、続きは以下を参照して下さい。
「Jakarta EE 10 の環境構築 (Payaraインストール)」
OSSの Javaサーブレット実行環境といえば Apache Tomcatが有名ですが、Payaraは Jakarta EEのアプリケーションサーバーなので機能がサーブレットに限られません。
サーブレット実行環境に限定しても機能的には上です。
その分複雑にはなってしまうので教育コストが高くなってしまうのですが、サーブレット実行環境としての採用を一度考慮してみても良いと思います。
サーバーエンジニアとして、Tomcatと Payaraの両方を触ってみることをおすすめしますね。
Jakarta EE 10に至っては、Amazonで検索する限りでは日本語書籍がなく、お寒い限りです。
英語の本は既に出ていますが、日本語で書いて編集していく過程がありますから、日本語書籍の出版はモノがリリースされてから半年くらいかかりますね。
そもそも Jakarta EE 10の日本語書籍を作ろうとしている出版社があるかどうかですけど…。
日本語で JSF(Java Server Faces)に触れている数少ない本。
JavaEEのバイブル。