@btnrougeが教えてくれなかったこと - GlassFish Advent Calendar 2013

おひさ。

 

GlassFish Advent Calendar 2013 - Adventarの22日目です。昨日のNorito Agetsumaさんの後を受けて書きます。明日はAOE Takashiさんです。

このブログは、12月4日の「GlassFish Embedded Serverのご紹介」を読んで珍しく興味を惹かれたので試してみたらいろいろつまずいた、というお話です。

 

とりあえず件の記事の最後に載っているサンプルを見よう見まねで打ち込んでみて、確かに動くことは動くのですが、補足事項にあるように管理ポートである4848をリスンできないのです。注意深く読み返していると、冒頭にこんなことを書いているではないですか。

GlassFishには、ドメイン管理サーバー(Domain Administration Server; DAS)、ノード(Node)、埋め込みサーバー(Embedded Server)の3種類の動作モードがあります。いずれも共通基盤であるNucleus上で構築されているため、Java EEサーバーとしての機能に差異はありません。

 ドメイン管理サーバ、ノード、埋め込みサーバのいずれでもJava EEサーバとしての機能に差異はない――確かにそうですが、裏を返せばGlassFishサーバとしての機能には差異はある、ということですね。

 

そこであたしは予想した。ドメイン管理サーバ以外のモードで動作するGlassFishは、実はポート4848をリスンできないのではないか、と。少なくとも埋め込みサーバーはどうあがいてもダメそう。もし、クラスタのノードでもポート4848をリスンしていなければ、この予想は的中していると言っていい。

 

まあ、一般家庭でGlassFishクラスタを構築するなんて、普通やりませんよね?我が家も家計費使い込みで実家に強制送還された母親のPCを片っ端から処分してしまったので、残るはあたしのこのWin7 PCのみ。ただ、どこにでも例外はいるみたいで、@btnrougeの自宅にはGlassFishクラスタがある。Advent Calendar 3日目5日目クラスタのことを書いているから、まだ環境が残っている可能性は高い。

 

ということで、ちと@btnrougeを問いただしてみました。

 

はじめからそれを言え!

 

リプライからはあたかもクラスタ・ノードの管理ポートについて知っていたかのような口調でしたが、これ、あたしが言うまで絶対気づいてなかったよな?ノードの管理ポートもあたしに言われて思い出したパターンだよな?

 

ということで、まとめです。

  • @btnrougeは、管理ポート(ポート4848)をリスンできるのはドメイン管理サーバだけで、クラスタ・ノードと埋め込みサーバではそれができないことを明言していなかった。
  • 管理ポートはドメインを管理するためのポートだから、ドメインに管理される側のクラスタ・ノードと、そもそもドメイン管理が使えない埋め込みサーバでは、それを使用することはできない(仮にリスンしても何もできないから)。
  • 管理コンソールもREST管理チャネルも管理ポートからアクセスするので、管理ポートを封じられている埋め込みサーバでは利用することができない。
  • こういうことは書いた時点ではっきりさせておかないと、あたしみたいに痛い目にあう人が続出するのに、@btnrougeはそれをやらなかった。怠慢というよりむしろ@btnrouge自身がこれらの落とし穴に気づいていなかったっぽい。

では皆様、素敵なクリスマスをお過ごしください。

 リア充爆発しろ!

ではでは。