GlassFishの監視ツール、LightFishを使ってみる

今日はLightFishの紹介です。

GlassFishの監視ツールであるLightFishがリリースされました。
LightFishはJava Championの一人である、Adam Bien氏によって開発されています。興味深いのは、監視ツールのGUIJavaFXで実装されていること。JavaFXのサンプルとしてもいい材料なのではないでしょうか。
というわけで、早速LightFishの導入を行なってみましょう。

サーバ側の準備

まずは、GlassFishにLightFishをDeployします。今回は以下の環境で試してみます。

ここで注意ですが、GlassFishはWeb ProfileではなくFull Platformを使用します。*1 *2
またLightFish本体のwarファイルを、こちらからダウンロードしておきましょう。

GlassFishの導入についてはここでは省略しますが*3、ここでは ~/glassfish3 に解凍したものとします。

まずはじめにGlassFishの組み込みデータベースであるJavaDBを起動します。JavaDBはLightFishから使われているデータベースです。

cd ~/glassfish3/bin
./asadmin start-database

次にdomainを起動します。

./asadmin start-domain

正常に起動すればlocalhost:4848でGlassFishの管理コンソールが使えるようになるので、ブラウザを立ち上げ

にアクセスしましょう。

管理コンソールが表示されたら、左のツリーからアプリケーションを選択し、デプロイボタンを押します。

"サーバーにアップロードされるパッケージ・ファイル"から、さきほどダウンロードしたlightfish.warを選択します。他の項目はデフォルトのままで大丈夫でしょう。その後、一番したの"OK"ボタンでwarをDeployします。
正常にDeployされたら、ブラウザから

にアクセスします。以下のような画面が表示されたでしょうか?

これはGlassFishの監視データをXMLで出力するサーバ側アプリケーションです。では実際に監視データを出力してみましょう。画面の"start"ボタンで監視を開始し、"Live Data"リンクをクリックします。するとXMLが表示されます。*4
これがサーバ側で作成している監視データで、これをJavaFXで作成されたクライアント側から定期的に呼び出して、画面の描画を行なっています。

クライアントの起動

それでは早速クライアントを起動してみましょう。クライアント本体は

  • ~/glassfish3/glassfish/domains/domain1/applications/lightfish/lightview-app.jar

になるので、これをコマンドで起動します。

cd ~/glassfish3/glassfish/domains/domain1/applications/lightfish
java -jar lightview-app.jar

すると、以下のような画面が起動します。

WebStartについて

気付いた方もいるかもしれませんが、サーバの画面でLive Viewというリンクがありましたよね?
あれは、じつはこのクライアントをWebStartで起動させるものなのですが、自分の環境ではうまく動かすことができませんでした。クリックすると以下の画面が表示されます。

最初はコマンドからlightview-app.jarを起動させることに気づかず、Webの画面から起動できないか四苦八苦していたのですがそこに、OracleJavaエヴァンジェリストの寺田氏と、Java Championの櫻庭氏からこんなツイートが・・・

まとめると

  • JavaFXのWebStartを実行するにはランタイムが必須
  • Windows版のJavaFXランタイムは提供されている
  • Mac版のJavaFXランタイムは未提供・・・
  • なので、現状ではJavaFXアプリケーションをWebStartさせることはできない

ということです。しかしその後、こんな情報もいただきました。

JDK7u6は現在Developer Previewが公開されているので、これを導入すればひょっとするとMacでもWebStartで実行できるかもしれませんね。


ということで以上、LightFishの紹介でした。どうぞ、お試しあれ。

*1:EJB Timer ServiceがFull Platformに含まれている

*2:でもWeb Profileでも後付けできる気がする・・・

*3:というか簡単なので説明するまでもないw

*4:うまく表示されない場合は、HTMLのソースを見ましょう