タグ「Payara Server」が付けられているもの

Payara Quick Start Guide

This article is revised and English transleted of the post 3rd December 2016.

Recently, Payara users are growing near by me. Most of them migrate from GlassFish, but it's certainly that Payara is the first Java EE server for someone. Then I note minimum instruction for using Payara.

0. Requirements

0.1. JDK

Payara is required JDK 7, or JDK 8 Update 20 or later. About JDK's set up is omitted because it's dependent with target OS. But I suggest to use the newest as possible. Remember setting path to JVM (java / java.exe). Attention: Payara ignores JAVA_HOME environment variable.

0.2. Network settings

In case of some OS, almost listen ports are closed in default. If your environment is such a thing, you need to add a settings of listen ports. Payara listens mainly TCP 4848, 8080 and 8181 ports. In addition to enable Hazelcast, you need to open 5900 and later ports (maximum 5999). Note: To use Payara Micro, Hazelcast is enabled in default.

1. Instruction of development environment

1.1. Downloading Payara Server

Download Payara Server from http://www.payara.fish/downloads (If you need Multi-Language edition, Access to http://www.payara.fish/all_downloads). When to download, you don't any registrations. Even if you use Payara Micro as operation, it's easy to develop applications on Payara Server.

In case of Payara 4.1.1.171.1 (latest release at the time), you may select following one;

  • Payara 4.1.1.171.1 (Full) : payara-4.1.1.171.1.zip
  • Payara-Web 4.1.1.171.1 (Web Profile) : payara-web-4.1.1.171.1.zip
  • Payara-ML 4.1.1.171.1 (Multi-Language Full) : payara-ml-4.1.1.171.1.zip
  • Payara-Web-ML 4.1.1.171.1 (Multi-Language Web Profile) : payara-web-ml-4.1.1.171.1.zip

I suggest you may select Full Platform i.e. payara-4.1.1.171.1.zip for development. If you need Web Profile (e.g. planning to use Payara Micro in operation), restricted by Maven dependency (javax:javax-ee-web:7.0).

1.2. Installation of Payara Server

Extract payara-4.1.1.171.1.zip to any directory. But on Windows, avoid to the directory it's named spaces (e.g. C:\Program Files). If you are an administrator of the computer, extract to C:\ (on Windows) or /opt (on Linux/Solaris) for ease. Then Payara Server installed on C:\payara41 (on Windows) or /opt/payara41 (on Linux/Solaris).

If you're not an administrator, it may extract to %USERPROFILE% (C:\Users\username) on Windows or $HOME (/export/home/username or /home/username) on Linux/Solaris.

1.3. IDE Settings for Payara Server

Payara Server is controlled by major IDEs with some settings.

1.3.1. Eclipse

In case of Eclipse , you should GlassFish Tools contained in Oracle Enterprise Pack for Eclipse (OEPE) (It's no problem to contain other plugins of OEPE). Choose GlassFish 4 for server type, and input C:\payara41\glassfish (Windows) or /opt/payara41/glassfish (Linux/Solaris) for installed directory. Pay attention to setting it glassfish directory that is a sub directory of Payara's install directory. (There's Nucleus, the core modules of Payara) Other choices may be still in defaults.

You may also obtain GlassFish Tools from Eclipse Marketplace.

1.3.2. NetBeans

NetBeans can integrate with GlassFish using a built in feature. Add a server instance in Service - Servers. Choose GlassFish Server as server type, and input C:\payara41 (Windows) or /opt/payara41 (Linux/Solaris) as installed directory. Other choices may be still in defaults. Note: NetBeans can download a server instance if not exists. But it never use for Payara because it will download GlassFish.

1.3.3. IntelliJ IDEA

IntelliJ IDEA can integrate with GlassFish using a built in feature. At first, choice Glassfish Server on Default Settings -> Build, Execution, Deployment -> Application Servers. And then required Glassfish Home directory, input C:\payara41 (Windows) or /opt/payara41 (Linux/Solaris). Other choices may be still in defaults.

1.4. Using Payara Server as development environment

Payara Server in development is usually started, stopped and deployed from IDE. Thus you may know following three operations for Payara Server.

  • payara41/bin/asadmin start-domain to start Payar Server
  • payara41/bin/asadmin stop-domain to stop Payara Server
  • Using admin console http://localhost:4848/ to operate Payara Server during Payara Server is running

Payara's admin console is such a Web UI;

payara-admingui-top.png
figure 1 - Payara Server Console (Dev.)

2. Instruction of operating envirionment

2.1. Downloading Payara Server

Download Payara Server from http://www.payara.fish/downloads as same as instruction of developing envirionment.

In case of Payara 4.1.1.171.1 (latest release at the time), you may select following one;

  • Payara 4.1.1.171.1 (Full) : payara-4.1.1.171.1.zip
  • Payara-Web 4.1.1.171.1 (Web Profile) : payara-web-4.1.1.171.1.zip
  • Payara-ML 4.1.1.171.1 (Multi-Language Full) : payara-ml-4.1.1.171.1.zip
  • Payara-Web-ML 4.1.1.171.1 (Multi-Language Web Profile) : payara-web-ml-4.1.1.171.1.zip

In case of operating environment, you should select to install either Full Platform or Web Profile. For many purposes, Web Profile is better. If you want to use APIs without Web Profile, you need to install Full Platform.

See also following slides about Web Profile.

It's easy to operate Payara Server using mainly admin console. You may use localized admin console to convenient. Then you may install Web Profile Multi-language : payara-ml-4.1.1.171.1.zip.

Tips: When you post an issue in trouble, it's precondition to use English UI. Thus I suggest you also prepare English version for reproducing tests.

2.2. Installation of Payara Server

Extract payara-4.1.1.171.1.zip to any directory. But on Windows, avoid to the directory it's named spaces (e.g. C:\Program Files). If you are an administrator of the computer, extract to C:\ (on Windows) or /opt (on Linux/Solaris) for ease. Then Payara Server installed on C:\payara41 (on Windows) or /opt/payara41 (on Linux/Solaris).

2.3. Enable to remote access to Payara Server

2.3.1. Setting the admin password

Payara is not set the admin pasword in default. It's mean that remote access to Payara Server is disabled in default. Then, at first, you should set the admin password. Use asadmin change-admin password command to set the admin password. see follows;

C:\payara41\bin>asadmin change-admin-password
Enter admin user name [default: admin]>
Enter the admin password>
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.

asadmin change-admin-password command works two tasks, (1) set admin user name, (2) set or change admin password. The input is following items;

  1. admin user name: If use 'admin', you may empty this item
  2. the admin password: current password; In default, it must set empty because the default admin password is empty
  3. the new admin password: input the password
  4. the new admin password again: input the password again

Attention: The first item is admin user name (not password), don't miss.

2.3.2. Enable secure administration

Payara rejects remote access via HTTP (plain text), so you should enable secure administration (remote access via HTTPS). To enable or disable secure administration is needed to run Payara Server, you start to use asadmin start-domain command.

Then you enable secure administration using asadmin enable-secure-admin command. the command requires admin user name and password. because you should set the admin password the previous step.

C:\payara41\bin>asadmin enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

After secure administration is enabled, you have to reboot Payara Server. You may use convenient command, asadmin restart-domain.

To enable and disable secure administration is also supported by admin console. But Web browser maybe disabled on Payara Server's machine. So I suggest to use command line.

2.4. Using Payara Server as operating envirionment

It's easest that (1) Start to asadmin start-domain command, (2) Stop to asadmin stop-domain command, (3) Other operations are on admin console. Admin console URL via remote access is https://<hostname>:4848/ and require 'User Name' (admin user name, 'admin' in default) and 'Password' (the admin password).

payara-admingui-login.png
figure 2 - Payara Server Log-in (Admin Console)

Set enable-secure-admin when to enable remote access. It means that you access to admin console via HTTPS (HTTP over SSL/TLS) instead of HTTP and using encrypted connection. (To access to admin console is restricted via HTTPS since GlassFish 3.1.2?) Web browsers will block to access admin console once because key store of Payara Server is not ready. But even if it's in intranet, you can ignore and force access to admin console.

payara-admingui-top.png
figure 3 - Payara Server Console (Ops.)

3. Starting up Payara Micro

3.1. Downloading Payara Micro

3.1.1. Download from the Web site

Download Payara Micro 171 (payara-micro-4.1.1.171.1.jar) from http://www.payara.fish/downloads (If need, you may change the file name to any).

3.1.2. Maven integration

Add dependencies to pom.xml in a Maven Project as following. Then Payara Micro is downloaded automatically from Maven Central Repository.

<dependencies>
  <groupId>fish.payara.extras</groupId>
  <artifactId>payara-micro</artifactId>
  <version>4.1.1.171.1</version>
</dependencies>

3.2. Using Payara Micro as operating environment

3.2.1. Run Payara Micro

At first, prepare a WAR file of Web application; webapp.war. Basically you develop a Web application using Payara Server even if you run it on Payara Micro.

And then, run Payara Micro on a terminal.

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war

Ctrl + C to exit.

Payara Micro is enabled Hazelcast clustering in default. (Payara Server is disabled in default) Usually it need not change. If you set with --noCluster option to disable Hazelcast clustering and start up first such a little. But --noCluster option stops whole of Hazelcast, it's disabled not only automatic clustering but also JCache.

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war --noCluster

3.2.2. Create Uber Jar and run

You can create Uber Jar (webapp.jar) from Payara Micro and WAR files.

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war --packageUberJar webapp.jar

After create Uber Jar, you run it directly.

java -jar webapp.jar

Uber Jar is Payara Micro includes WAR files. You may use various options of Payara Micro, and Ctrl + C to exit.

4. Conclusion

Payara is growing day by day. Recently it is not only "well-maintained GlassFish" but also fitting for commertial use. Now it's features are so many and powerful, but it's minimal instruction to use is kept simple. I wish Payara is used many people -- from newbies to experts.

Payara クイック・スタート・ガイド

この記事は、2016 年 12 月 3 日の「Payara クイック・スタート・ガイド」の改訂版です。

最近、私の周りで Payara ユーザーが増えてきました。その多くは GlassFish から移行してきた方々ですが、今後 Payara が最初の Java EE サーバーとなる方々も出てくるかと思います。そういった方々に向けて、Payara の実用レベルで最低限のセットアップをまとめておきます。

0. 事前準備

0.1. JDK

Payara を動作させるには JDK 7 または JDK 8 Update 20 以降が必要です。OS によってセットアップ手順が異なるため割愛しますが、できるだけ新しい Update を使用することをおすすめします。なお、JVM (java / java.exe) へのパスはあらかじめ設定しておいてください (注意: Payara は JAVA_HOME 環境変数を参照しません)。

0.2. ネットワーク設定

いくつかの OS では既定でほとんどのポートの受信を拒否するよう設定されています。これらの OS では、Payara で使用する TCP ポートの受信を許可するよう設定変更が必要です。Payara が使用する主なポートは、TCP 4848、8080、8181 です。Hazelcast を有効にする場合 (Payara Micro の場合は必須) はそれに加えて 5900 以降 (最大 5999) を空けておきます。

1. 開発環境向けスタートアップ・ガイド

1.1. Payara Server をダウンロードする

Payara Server をダウンロードします。http://www.payara.fish/downloads (多国語化版が欲しい場合は http://www.payara.fish/all_downloads) から無償で入手できます。ユーザー登録なども必要ありません。運用環境として Payara Micro を使用する場合でも、開発環境での作業は Payara Server で行った方が便利です。

Payara 4.1.1.171.1 (本稿執筆時点の最新版) の場合、基本的には以下のいずれかを選択することになります。

  • Payara 4.1.1.171.1 (Full) : payara-4.1.1.171.1.zip
  • Payara-Web 4.1.1.171.1 (Web Profile) : payara-web-4.1.1.171.1.zip
  • Payara-ML 4.1.1.171.1 (Multi-Language Full) : payara-ml-4.1.1.171.1.zip
  • Payara-Web-ML 4.1.1.171.1 (Multi-Language Web Profile) : payara-web-ml-4.1.1.171.1.zip

開発環境の場合は Full Platform の payara-4.1.1.171.1.zip を選択すると良いでしょう。必要に応じて (例えば、Payara Micro での運用を想定している場合など)、Maven の依存関係で javax:javax-ee-web:7.0 を設定して使用可能な API を Java EE Web Profile に制限する方法を採るのが現実的です。

1.2. Payara Server をインストールする

ダウンロードした payara-4.1.1.171.1.zip を展開します。展開先は自由に選べます (ただし Windows 環境では C:\Program Files などスペース入りのフォルダは避けた方が無難です)。管理者権限がある場合は、Windows では C:\ 以下に、Linux/Solaris では /opt 以下にそれぞれ展開すると分かりやすいです。展開後、Windows では C:\payara41 以下、Linux/Solaris では /opt/payara41 以下に Payara Server が配置されます。この状態でインストールは完了です。

管理者権限を持たない場合は、Windows では %USERPROFILE% (C:\Users\{ユーザー名}) 以下、Linux/Solaris では $HOME (/export/home/{ユーザー名} または /home/{ユーザー名}) 以下にそれぞれ展開すると良いでしょう。

1.3. IDE で Payara Server の設定を行う

Payara Server を IDE で制御できるように設定します。

1.3.1. Eclipse

Eclipse の場合は、Oracle Enterprise Pack for Eclipse (OEPE) に含まれる GlassFish Tools をインストールする必要があります (OEPE の他のプラグインが含まれていても問題ありません)。サーバーの種類として GlassFish 4 を選択し、サーバーのインストール先として C:\payara41\glassfish (Windows) または /opt/payara41/glassfish (Linux/Solaris) を選択します。Payara のインストール・ディレクトリ以下の glassfish サブディレクトリ (この場所が Payara のコアである Nucleus になります) まで指定する必要があることに注意してください。その他の設定項目は、既定値のままで良いでしょう。

なお、GlassFish Tools は Eclipse Marketplace からも入手することができます。

1.3.2. NetBeans

NetBeans には GlassFish との統合機能が含まれているため、これを利用します。サービス - サーバー画面で、サーバー・インスタンスを追加します。サーバーの種類として GlassFish Server を選択し、サーバーのインストール先として C:\payara41 (Windows) または /opt/payara41 (Linux/Solaris) を入力します。その他の設定項目は、既定値のままで良いでしょう。なお、NetBeans にはサーバー・インスタンスがない場合にダウンロードしてインストールする機能も備わっていますが、Payara の場合には使用できません (GlassFish がダウンロードされるため)。

1.3.3. IntelliJ IDEA

IntelliJ IDEA には GlassFish との統合機能が含まれているため、これを利用します。Default Settings -> Build, Execution, Deployment -> Application Servers で Glassfish Server を選択します。Glassfish Home ディレクトリをたずねられますので、C:\payara41 (Windows) または /opt/payara41 (Linux/Solaris) を入力します。その他の設定項目は、既定値のままで良いでしょう。

1.4. Payara Server を開発環境として使用する

開発環境の Payara Server は、通常 IDE から起動、停止およびアプリケーションのデプロイを行います。Payara Server の直接操作については、以下の 3 点を押さえておけば大丈夫でしょう。

  • payara41/bin/asadmin start-domain で Payar Server を起動
  • payara41/bin/asadmin stop-domain で Payara Server を停止
  • Payara Server の起動中は管理コンソール http://localhost:4848/ で大抵の設定操作は可能

Payara の管理コンソールは、以下のような Web UI となっています (英語版 UI)。

payara-admingui-top.png
figure 1 - Payara Server Console (Dev.)

2. 運用環境向けスタートアップ・ガイド

2.1. Payara Server をダウンロードする

Payara Server をダウンロードします。手順は開発環境の場合と同じです。Payara 4.1.1.171.1 の場合、基本的には以下のいずれかを選択することになります。

  • Payara 4.1.1.171.1 (Full) : payara-4.1.1.171.1.zip
  • Payara-Web 4.1.1.171.1 (Web Profile) : payara-web-4.1.1.171.1.zip
  • Payara-ML 4.1.1.171.1 (Multi-Language Full) : payara-ml-4.1.1.171.1.zip
  • Payara-Web-ML 4.1.1.171.1 (Multi-Language Web Profile) : payara-web-ml-4.1.1.171.1.zip

運用環境の場合は、まず Full Platform と Web Profile のどちらをインストールするかの判断が必要です。多くの用途では Web Profile が第一選択肢となるでしょう。Web Profile にない API が必要であれば Full Platform をインストールします。

Web Profile については以下の資料をしてください。

Payara Server の設定操作は管理コンソールを中心に行うのが便利です。その際、日本語化された UI は使い勝手が良いため、多国語版 Web Profile : payara-ml-4.1.1.171.1.zip を選択しても良いでしょう。

ただし、トラブル発生時の Issue は英語版 UI での利用が前提であるため、再現テストのために英語版 Web Profile 環境を別途用意しておくと安心です。

2.2. Payara Server をインストールする

ダウンロードした Payara Server の ZIP アーカイブ (payara-ml-4.1.1.171.1.zip など) を展開します。展開先は自由に選べます (ただし Windows 環境では C:\Program Files などスペース入りのフォルダは避けた方が無難です)。管理者権限がある場合は、Windows では C:\ 以下に、Linux/Solaris では /opt 以下にそれぞれ展開すると分かりやすいです。展開後、Windows では C:\payara41 以下、Linux/Solaris では /opt/payara41 以下に Payara Server が配置されます。この状態でインストールは完了です。

2.3. Payara Server のリモートアクセスを有効にする

2.3.1. 管理パスワードの設定

Payara の既定では、管理パスワードが設定されていません。リモートアクセスを有効にするのに先立って、まず管理パスワードを設定する必要があります。管理パスワードの設定には asadmin change-admin-password コマンドを使用します。

C:\payara41\bin>asadmin change-admin-password
Enter admin user name [default: admin]>
Enter the admin password>
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.

ここでは、管理ユーザー名の決定と、管理パスワードの変更という 2 種類の操作を行います。入力項目は、以下の通りです。

  1. 管理ユーザー名: 既定の admin を使用する場合は空欄とします
  2. 現在の管理パスワード: 既定では管理パスワードは設定されていないため空欄とします
  3. 新しい管理パスワード: 管理パスワードを入力します
  4. 新しい管理パスワード: 入力した管理パスワードと同じものを確認のため入力します

最初に管理ユーザー名の設定があります。ここは見落としがちのため注意してください。

2.3.2. セキュア管理の有効化

リモートアクセスのためにセキュア管理 (HTTPS 通信) を有効化します。セキュア管理の有効化/無効化は Payara Server が起動している必要があるため、まず asadmin start-domain コマンドで Payara Server を起動します。

続いて、asadmin enable-secure-admin コマンドでセキュア管理を有効化します。その際には、先に設定した管理ユーザー名 (admin) と管理パスワードを入力する必要があります。

C:\payara41\bin>asadmin enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

セキュア管理を有効化した後は、Payara Server を再起動する必要があります。Payara Server の停止と起動を組み合わせても良いのですが、再起動を行う asadmin restart-domain コマンドを使用した方が高速です。

セキュア管理の有効化/無効化は管理コンソールでも操作できますが、Payara Server のインストール先が必ずしも Web ブラウザを備えているとは限らないため、コマンドラインから管理パスワードと同時に設定を行った方が無難です。

2.4. Payara Server を運用環境として使用する

手っ取り早い方法は、起動コマンドの asadmin start-domain と停止コマンドの asadmin stop-domain だけ覚えて、後の操作は管理コンソール上で行うことです。リモートアクセス時の管理コンソールの URL は https://<hostname>:4848/ となり、起動時にユーザー名 & パスワードの認証があります (ユーザー名は既定では admin となります)。

payara-admingui-login.png
figure 2 - Payara Server Log-in (Admin Console)

リモートアクセスを有効にする際に、enable-secure-admin を設定していますが、これにより管理コンソールへのアクセスが HTTP から HTTPS (HTTP over SSL/TLS) に変更され、暗号化通信となります (GlassFish 3.1.2 あたりから管理コンソールへのリモートアクセスは HTTPS に限定されるようになっています)。Payara Server のインストール直後は電子証明書のチェーンが整備されていないため、ブラウザ側で一旦アクセスをブロックされますが、イントラネット上であるため無視してアクセスを強行してください。その後、Payara の管理コンソールにアクセスできるようになります。

payara-admingui-top.png
figure 3 - Payara Server Console (Ops.)

3. Payara Micro スタートアップ・ガイド

3.1. Payara Micro をダウンロードする

3.1.1. Web サイトからのダウンロード

http://www.payara.fish/downloads から Payara Micro 171 (payara-micro-4.1.1.171.1.jar) をダウンロードします。ダウンロード後、ファイル名は必要に応じて変更しても構いません。

3.1.2. Maven 統合

Maven プロジェクトの pom.xml に以下の依存関係記述を追加します。これにより、Maven Central Repository から Payara Micro が自動的にダウンロードされ、プロジェクトに組み込まれます。

<dependencies>
  <groupId>fish.payara.extras</groupId>
  <artifactId>payara-micro</artifactId>
  <version>4.1.1.171.1</version>
</dependencies>

3.2. Payara Micro を運用環境として使用する

3.2.1. Payara Micro を通常実行する

まず、Web アプリケーションの WAR ファイルを用意します。ここでは WAR ファイルを webapp.war と仮定します。Web アプリケーションは基本的に Payara Server を使って開発することになるでしょう。

WAR ファイルが準備できたら、ターミナルから Payara Micro を起動します。

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war

終了する場合は Ctrl + C を使います。

Payara Micro は既定で Hazelcast による自動クラスタリングが有効になっています (Payara Server では無効)。通常はそのままでも問題ありませんが、--noCluster オプションを付けて無効化することで、少しだけ起動を早めることができます。ただし、--noCluster オプションを使用すると、Hazelcast そのものが無効化されるため、自動クラスタリングだけでなく JCache も使えなくなってしまうことに注意してください。

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war --noCluster

3.2.2. Uber Jar を作成して実行する

Payara Micro と WAR ファイルから Uber Jar を作成することもできます。ここでは、出力する Uber Jar の名前を webapp.jar と仮定します。

$ java -jar payara-micro-4.1.1.171.1.jar --deploy webapp.war --packageUberJar webapp.jar

作成後は、直接 Uber Jar を実行することになります。

java -jar webapp.jar

Payara Micro の Uber Jar は、実際には WAR ファイルを内包した Payara Micro です。Payara Micro の起動時オプションが使用できるほか、Ctrl + C で終了できる点も共通しています。

4. まとめ

Payara は日々進化を続けており、当初の「より良い GlassFish」から、本格的な商用 Java EE サーバーとなるべく様々な機能が追加されています。しかし、最小限の設定は決して多くなく、今回ご紹介した内容をもとに簡単な環境構築は可能です。

Payara のログ・ビューワの制限事項

先日公開した「Payara の JSON Log Formatter」の時点では黙っていましたが、Payara のログ出力形式を JSON にした場合には管理コンソールのログ・ビューワで参照することができません。バグかもしれないが詳細まで調べていないからしばらく黙っていようと思ったら、@yumix_h早速 Issue Tracker で報告したので、こちらでの調査結果を踏まえて報告しておきます。なお、この件は私の調査と Mike Croft (@croft) の判断により、Enhacement として Payara の internal issue になったことを補足しておきます。

この Issue にはタグ "2:WithDev" (Payara 社内持ち帰り)、"c:Enhancement" (機能追加) および "reproducible" (再現可能) が付いています。タグの意味については先日の記事「Payara Issue Tracker のラベル一覧」にまとめていますので参考にしてください。

Payara 本体のロギングには java.util.logging (JUL) を使用しており、ロガーの設定はプロパティ・ファイル logging.properties の内容に記述されています。管理コンソールの「ロガーの設定」画面の操作で変更されるファイルは、domain.xml ではなく logging.properties です。

logging.properties は以下のディレクトリに格納されます:
Payara_installed_directory/glassfish/domains/domain_name/config

管理コンソールの「ロガーの設定」には、「コンソールのロギング・フォーマット」と「ログ・ファイルのロギング・フォーマット」の 2 項目があり、それぞれログ・ハンドラに対応しています。具体的には以下の通りです。

管理コンソールのプルダウン・リストの選択肢である「ULF」、「ODL」および「JSON」は、上記のログ・ハンドラに設定するログ・フォーマッタに対応しています。具体的には以下の通りです。

この他にも、logging.properties を直接操作することにより、任意のログ・フォーマッタを指定することができます。Payara 内部 (具体的には GFFileHandler) では、ULF または ODL ではない形式のログ・フォーマッタを Custom formatter と呼称しています。 Custom formatter にはいくつかの制約があります。

  • 管理コンソールなどでロガーの設定を変更すると GlassFish/Payara の既定値である ULF に再設定される場合がある。
  • 管理コンソールのログ・ビューワでは参照できず、Raw ログ・ビューワを使用する必要がある。これは、ログ・ビューワは標準のログ・フォーマッタのみ対応しているため。

IMPORTANT : Payara 4.1.1.164 では、標準のログ・フォーマッタは UnformLogFormatter および ODLLogFormatter の 2 種類だけです。そのため、JSONLogFormatter は実際には Custom formatter として扱われます。そのため、Custom formatter が出力する JSON 形式のログを管理コンソールのログ・ビューワから参照することはできません (代わりに Raw ログ・ビューワを使用すること)。

ログ・ビューワに対応させるためには、当該ログ出力形式に対応した LogParser の実装や、ログ・ビューワの Backing Bean (※管理コンソールは JavaServer Faces 1.x/2.x で実装されています) の改修などが必要となります。しかし、現在の実装では JSONLogFormatter の追加と、管理コンソールから「JSON」 = JSONLogFormatter を選択可能にする改修を加えただけに過ぎません。

Payara でも管理コンソールのログ・ビューワを JSON 形式のログにも対応させる案について検討に入りましたので、将来のリリースでは管理コンソール上からログ・ビューワを使用して JSON 形式のログを参照できるようになるかもしれません。

Payara の Asadmin Recorder を活用する

この記事は、Payara Advent Calendar 2016 の 9 日目です。昨日は「Payara の Request Tracing Service」です。今回は Asadmin Recorder について、復習も兼ねて取り上げてみたいと思います。

1. Asadmin Recorder とは

Asadmin Recorder は、Payara の管理コンソール上で行った動作を asadmin コマンドで実行可能なスクリプトとして記録する機能です。

Payara 4.1.1.162 以降で管理コンソールを開くと、右上に「Enable Asadmin Recorder」というボタンが追加されていると思います (figure 1)。

enable-asadmin-recorder.png
figure 1 - Enable Asadmin Recorder ボタン

このボタンをクリックすると、それ以降の管理コンソール上の操作がファイル (既定では payara41/glassfish/domains/domain1/asadmin-commands.txt) に記録されてゆきます。再度ボタンをクリックすると記録を停止します。

生成されたスクリプト (ここでは既定の asadmin-commands.txt とします) は標準出力からパイプで asadmin に渡すことでそのままスクリプトとして使用することができます。

(Linux/Unix/Mac) $ cat asadmin-commands.txt | asadmin

(Windows) > type asadmin-commands.txt | asadmin

Asadmin Recorder によって、例えば WebLogic Server が装備している WLST のような使い方が可能になります (スクリプトに制御構文がないため WLST のような柔軟性はありませんが)。

2. asadmin コマンドについて

asadmin は Payara の起動に使用するコマンドです。ただし、他の Java EE サーバー製品が単なる起動スクリプトであるのに対し、asadmin は CLI の管理ユーティリティーである点が異なります。

Payara の管理は、究極的には asadmin と REST backend の 2 通りしか用意されていません。管理コンソールもその実体は REST backend のフロントエンドとして動作する Web アプリケーションです。

asadmin は Payara のすべてを操作することが可能ですが、REST backend ではいくつかの操作が行えません。具体的には、DAS の起動は REST backend では実行できない操作です。

asadmin にはシングルモードとマルチモードという、2 種類の動作モードがあります。

(1) シングルモード

asadmin の基本となるモードです。

# asadmin サブコマンド名 [パラメーター]

パラメーターはサブコマンドによって異なります(サブコマンドによってはパラメーターがない場合もあります)。

(2) マルチモード

複数のサブコマンドを続けて入力することができるモードです。「asadmin」とだけ入力するとマルチモードになります。その後はプロンプト「asadmin>」に続いてサブコマンドを次々と入力してゆきます。すべてが終わったら「exit」コマンドでマルチモードを終了します。

# asadmin
Use "exit" to exit and "help" for online help.
asadmin> サブコマンド名 [パラメーター]
...
asadmin> exit

マルチモードでは、実行したいサブコマンドのリストをファイルとして作成しておくことで、サブコマンドのバッチ実行が可能になります。

# cat サブコマンド一覧ファイル | asadmin

Asadmin Recorder で生成されたスクリプトの実行も、マルチモードを利用します。

3. Asadmin Recorder を使う

それでは、実際に Asadmin Recorder を使用してみます。まずは Asadmin Recorder を有効化 (figure 1) し、操作記録を開始します。

step1-enable-asadmin-recorder.png
figure 1 - Asadmin Recorder の有効化

続いて、サンプル操作として Hazelcast を有効化してみます (figure 2)。

step2-enable-hazelcast.png
figure 2 - Hazelcast の有効化

もう一つのサンプル操作として、ログ出力形式を既定値の ODL から新しく追加された JSON に変更してみましょう (JSON Log Formatter については後日ご紹介します)。

step3-set-logger-to-json.png
figure 3 - ログ出力形式の変更 (ODL から JSON に変更)

最後に Asadmin Recorder を無効化し、ここまでの操作を記録したスクリプトを生成します。

step4-disable-asadmin-recorder.png
figure 4 - Asadmin Recorder の無効化

ここまでの操作を記録した asadmin-commands.txt の内容は以下の通りです。

set-hazelcast-configuration --startPort=5900 --licenseKey= --hazelcastConfigurationFile=hazelcast-config.xml --clusterName=development --clusterPassword=D3v3l0pm3nt --dynamic=true --multicastPort=54327 --enabled=true --multicastGroup=224.2.2.3 --jndiName=payara/Hazelcast --target=server 
set-log-attributes --target=server-config java.util.logging.FileHandler.pattern='%h/java%u.log'
set-log-attributes --target=server-config java.util.logging.FileHandler.count='1'
set-log-attributes --target=server-config java.util.logging.FileHandler.formatter='java.util.logging.XMLFormatter'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes='0'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.excludeFields=''
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.compressOnRotation='false'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.multiLineMode='true'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours='0'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange='false'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.formatter='fish.payara.enterprise.server.logging.JSONLogFormatter'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles='0'
set-log-attributes --target=server-config handlerServices='com.sun.enterprise.server.logging.GFFileHandler,com.sun.enterprise.server.logging.SyslogHandler'
set-log-attributes --target=server-config java.util.logging.FileHandler.limit='50000'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.file='${com.sun.aas.instanceRoot}/logs/server.log'
set-log-attributes --target=server-config handlers='java.util.logging.ConsoleHandler'
set-log-attributes --target=server-config java.util.logging.ConsoleHandler.formatter='com.sun.enterprise.server.logging.UniformLogFormatter'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.flushFrequency='1'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.logtoConsole='false'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging='false'
set-log-attributes --target=server-config log4j.logger.org.hibernate.validator.util.Version='warn'
set-log-attributes --target=server-config com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes='2000000'

4. Asadmin Recorder の活用方法

Payara Server の設定の多くは、管理コンソールで行うのが簡単です。しかし、複数の Payara Server で同一の設定をしなければいけない場合 (クラスタ構成を採る場合など)、すべてのノードに対して管理コンソールで設定を行うのは面倒です。そこで、Asadmin Recorder を有効にして基準となるサーバーの設定を管理コンソールで行い、他のサーバーの設定を出力されたスクリプトでバッチ実行すると、設定に関わる時間を大幅に短縮することができます。

あるいは、Payara Server の設定内容を Asadmin Recorder で記録しておき、障害発生時のリストア作業に用いる方法も考えられます。こちらもバッチ処理で設定が行えるため、リストアにかかる時間を短縮することが可能です。

この記事は、Payara Advent Calendar 2016 の 5 日目です。昨日は「Payara Micro の設計と実装」です。

Payara Micro のマニュアルには、Payara Micro は Payara Server とクラスタを組むことができるという記載があります (原文: "Payara Micro can cluster with Payara Server and share web session and JCache data.")。そこで、実際に試してみました。

なお、実施時期の都合により Payara 4.1.1.163 (旧バージョン) での検証となることをはじめにお断りしておきます。

1. 事前準備

Payara Micro は既定で Hazelcast の Auto Clustering が有効になっているため、特別な設定は必要ありません。一方、Payara Server は GlassFish との互換性維持のためか、Hazelcast が既定で無効となっているため、最初に有効化する必要があります。

Payara Server の Hazelcast を有効化するには、大きく管理コンソール (GUI) を使用する方法と、asadmin の起動時オプションで指定する方法の 2 種類があります。

1.1. 管理コンソールから Hazelcast を有効化する

管理コンソールから Hazelcast の設定を変更するには、図1 の Hazelcast 構成画面から操作します。手前味噌ですが、この画面の日本語化を担当したのは私です (Payara 4.1.153 以降)。

Hazelcast Configuration.png
figure 1.1 - Hazelcast 構成画面

スクリーンショットの赤枠で囲った部分、「Hazelcast分散キャッシュ機能を有効にするかどうかを決定します。」のチェックを ON にして、設定を保存してください。再起動は不要です。これだけで Payara Server の Hazelcast は有効になります。

もし、はじめからチェックが ON になっていた場合は、既に Hazelcast が有効になっています。

管理コンソールからだけでは本当に Hazelcast が有効化されたのか確認できないため (メッセージを信じるしかない)、念のため server.log の中身を見てみます。ここではスペースの関係上、Hazelcast に関連する場所だけ抜粋します。

[2016-12-05T23:38:15.075+0900] [Payara 4.1] [INFO] [] [com.hazelcast.instance.DefaultAddressPicker] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095075] [levelValue: 800] [[
  [LOCAL] [development] [3.6.4] Prefer IPv4 stack is true.]]

[2016-12-05T23:38:15.134+0900] [Payara 4.1] [INFO] [] [com.hazelcast.instance.DefaultAddressPicker] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095134] [levelValue: 800] [[
  [LOCAL] [development] [3.6.4] Picked Address[192.168.184.67]:5900, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5900], bind any local is true]]

[2016-12-05T23:38:15.147+0900] [Payara 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095147] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Hazelcast 3.6.4 (20160701 - 5b94d9f) starting at Address[192.168.184.67]:5900]]

[2016-12-05T23:38:15.147+0900] [Payara 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095147] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.]]

[2016-12-05T23:38:15.148+0900] [Payara 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095148] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Configured Hazelcast Serialization version : 1]]

[2016-12-05T23:38:15.281+0900] [Payara 4.1] [INFO] [] [com.hazelcast.spi.OperationService] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095281] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Backpressure is disabled]]

[2016-12-05T23:38:15.300+0900] [Payara 4.1] [INFO] [] [com.hazelcast.spi.impl.operationexecutor.classic.ClassicOperationExecutor] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095300] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Starting with 2 generic operation threads and 4 partition operation threads.]]

[2016-12-05T23:38:15.706+0900] [Payara 4.1] [INFO] [] [com.hazelcast.instance.Node] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095706] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Creating MulticastJoiner]]

[2016-12-05T23:38:15.710+0900] [Payara 4.1] [INFO] [] [com.hazelcast.core.LifecycleService] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095710] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Address[192.168.184.67]:5900 is STARTING]]

[2016-12-05T23:38:15.790+0900] [Payara 4.1] [INFO] [] [com.hazelcast.nio.tcp.nonblocking.NonBlockingIOThreadingModel] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443095790] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] TcpIpConnectionManager configured with Non Blocking IO-threading model: 3 input threads and 3 output threads]]

[2016-12-05T23:38:18.600+0900] [Payara 4.1] [INFO] [] [com.hazelcast.cluster.impl.MulticastJoiner] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098600] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] 


Members [1] {
	Member [192.168.184.67]:5900 this
}
]]

[2016-12-05T23:38:18.651+0900] [Payara 4.1] [INFO] [] [com.hazelcast.jmx.ManagementService] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098651] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Hazelcast JMX agent enabled.]]

[2016-12-05T23:38:18.679+0900] [Payara 4.1] [INFO] [] [com.hazelcast.core.LifecycleService] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098679] [levelValue: 800] [[
  [192.168.184.67]:5900 [development] [3.6.4] Address[192.168.184.67]:5900 is STARTED]]

[2016-12-05T23:38:18.691+0900] [Payara 4.1] [INFO] [] [fish.payara.nucleus.hazelcast.HazelcastCore] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098691] [levelValue: 800] [[
  Hazelcast Instance Bound to JNDI at payara/Hazelcast]]

[2016-12-05T23:38:18.692+0900] [Payara 4.1] [INFO] [] [fish.payara.nucleus.hazelcast.HazelcastCore] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098692] [levelValue: 800] [[
  JSR107 Caching Provider Bound to JNDI at payara/CachingProvider]]

[2016-12-05T23:38:18.692+0900] [Payara 4.1] [INFO] [] [fish.payara.nucleus.hazelcast.HazelcastCore] [tid: _ThreadID=136 _ThreadName=admin-thread-pool(6)] [timeMillis: 1478443098692] [levelValue: 800] [[
  JSR107 Default Cache Manager Bound to JNDI at payara/CacheManager]]

Hazelcast クラスタへ参加したことを確定付けているのは、上記ログのうち以下の部分です。Hazelcast でクラスタ・ノードの追加・削除を繰り返しているとその度に現れるメッセージですので、覚えておきましょう。

Members [1] {
	Member [192.168.184.67]:5900 this
}

ちなみに、現時点では 1 つのノードしかクラスタに参加していないため、Member は 1 つしか表示されていません。

1.2. asadmin から Hazelcast を有効化する

管理コンソールが使用できない環境では、asadmin から Hazelcast を有効化します。

asadmin set-hazelcast-configuration --enabled=true [ --dynamic=true ]

asadmin を使用する場合には、サーバーを起動するたびに設定を行う必要があるます。

1.3. domain.xml に設定を記述する

domain を停止した状態で domain.xml に以下の 1 行を追加します。

<hazelcast-runtime-configuration enabled="true"/>

2. Payara Server を起動する

Hazelcast が有効になっている状態で Payara Server を起動します。念のため、1.1. で示したようなログが server.log に出力されていることを確認してください。

3. Payara Micro を起動する

ここまでの手順に引き続き、Payara Micro を起動します。以下に起動時のログを示します。

hasunuma@pasiphae:~$ java -jar greeting\-0.0.1\-SNAPSHOT.jar                    
[2016-12-05T23:40:54.549+0900] [Payara Micro 4.1] [INFO] [NCLS-CORE-00087] [javax.enterprise.system.core] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254549] [levelValue: 800] Grizzly Framework 2.3.25 started in: 26ms - bound to [/0.0.0.0:8080]

[2016-12-05T23:40:54.640+0900] [Payara Micro 4.1] [INFO] [NCLS-CORE-00058] [javax.enterprise.system.core] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254640] [levelValue: 800] Network listener https-listener on port 8443 disabled per domain.xml

[2016-12-05T23:40:54.752+0900] [Payara Micro 4.1] [INFO] [SEC-SVCS-00100] [javax.enterprise.security.services] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254752] [levelValue: 800] Authorization Service has successfully initialized.

[2016-12-05T23:40:54.805+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.instance.DefaultAddressPicker] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254805] [levelValue: 800] [LOCAL] [development] [3.6.4] Prefer IPv4 stack is true.

[2016-12-05T23:40:54.809+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.instance.DefaultAddressPicker] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254809] [levelValue: 800] [LOCAL] [development] [3.6.4] Picked Address[192.168.184.89]:5901, using socket ServerSocket[addr=/0.0.0.0,localport=5901], bind any local is true

[2016-12-05T23:40:54.819+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254819] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Hazelcast 3.6.4 (20160701 - 5b94d9f) starting at Address[192.168.184.89]:5901

[2016-12-05T23:40:54.820+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254820] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.

[2016-12-05T23:40:54.820+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.system] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254820] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Configured Hazelcast Serialization version : 1

[2016-12-05T23:40:54.961+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.spi.OperationService] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254961] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Backpressure is disabled

[2016-12-05T23:40:54.978+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.spi.impl.operationexecutor.classic.ClassicOperationExecutor] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443254978] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Starting with 2 generic operation threads and 2 partition operation threads.

[2016-12-05T23:40:55.338+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.instance.Node] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443255338] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Creating MulticastJoiner

[2016-12-05T23:40:55.341+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.core.LifecycleService] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443255341] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Address[192.168.184.89]:5901 is STARTING

[2016-12-05T23:40:55.413+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.nio.tcp.nonblocking.NonBlockingIOThreadingModel] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443255413] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] TcpIpConnectionManager configured with Non Blocking IO-threading model: 3 input threads and 3 output threads

[2016-12-05T23:40:55.562+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.cluster.impl.MulticastJoiner] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443255562] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Trying to join to discovered node: Address[192.168.184.67]:5900

[2016-12-05T23:40:55.634+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.nio.tcp.InitConnectionTask] [tid: _ThreadID=58 _ThreadName=cached2] [timeMillis: 1478443255634] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Connecting to /192.168.184.67:5900, timeout: 0, bind-any: true

[2016-12-05T23:40:55.641+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.nio.tcp.TcpIpConnectionManager] [tid: _ThreadID=58 _ThreadName=cached2] [timeMillis: 1478443255641] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Established socket connection between /192.168.184.89:47714 and /192.168.184.67:5900

[2016-12-05T23:41:02.583+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.cluster.ClusterService] [tid: _ThreadID=38 _ThreadName=hz._hzInstance_1_development.generic-operation.thread-0] [timeMillis: 1478443262583] [levelValue: 800] [[
  [192.168.184.89]:5901 [development] [3.6.4] 

Members [2] {
        Member [192.168.184.67]:5900
        Member [192.168.184.89]:5901 this
}
]]

[2016-12-05T23:41:04.602+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.jmx.ManagementService] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264602] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Hazelcast JMX agent enabled.

[2016-12-05T23:41:04.730+0900] [Payara Micro 4.1] [INFO] [] [com.hazelcast.core.LifecycleService] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264730] [levelValue: 800] [192.168.184.89]:5901 [development] [3.6.4] Address[192.168.184.89]:5901 is STARTED

[2016-12-05T23:41:04.735+0900] [Payara Micro 4.1] [INFO] [] [fish.payara.nucleus.eventbus.EventBus] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264735] [levelValue: 800] Payara Clustered Event Bus Enabled

[2016-12-05T23:41:04.736+0900] [Payara Micro 4.1] [INFO] [] [fish.payara.nucleus.store.ClusteredStore] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264736] [levelValue: 800] Payara Clustered Store Service Enabled

[2016-12-05T23:41:04.738+0900] [Payara Micro 4.1] [INFO] [] [fish.payara.nucleus.exec.ClusterExecutionService] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264738] [levelValue: 800] Payara Clustered Exector Service Enabled

[2016-12-05T23:41:04.738+0900] [Payara Micro 4.1] [INFO] [] [fish.payara.nucleus.store.ClusteredStore] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1478443264738] [levelValue: 800] Payara Cluster Service Enabled

Hazelcast クラスタへ参加したことを確定付けているのは、上記ログのうち以下の部分です。

Members [2] {
        Member [192.168.184.67]:5900
        Member [192.168.184.89]:5901 this
}

ちなみに、このでは 2 つ目のノードがクラスタに参加したため、Member には 2 つ表示されています。

4. 説明しなかったこと

さらなるインスタンスの追加や削除については、スペースの都合で割愛しましたが、ノード間のネットワーク接続が正常で、かつ、ここまでの手順に問題が発生していなければ正しく行われるはずです。結果は必ず Hazelcast のログである Members [n] { (ノード一覧) } で簡単に確認できるため、最低限この部分のチェックだけは怠らないようにしてください。

5. Payara 4.1.1.164 追補

Payara 4.1.1.164 では管理コンソールに Hazelcast のクラスタ・メンバを一覧できる画面が追加されました。合わせて、Hazelcast 構成タブの位置も移動になっています。

hazelcast-cluster-members.png
figure 5.1 - Hazelcast クラスタ・メンバ一覧

hazelcast-configuration.png
figure 5.2 - Hazelcast 構成