日々常々

ふつうのプログラマがあたりまえにしたいこと。

Glassfish3.1を使ってみる(ついでにHudsonも)

JavaFX & GlassFish 合同勉強会Ustreamで見て、Glassfishを触ってみよーって気分になったので。

環境とか使ったものとか

Windows7, Java 1.6.0_21, glassfish-3.1-web-b33.zip, hudson.war(1.386)

ダウンロードとインストール

まずダウンロードします。ダウンロードサイトは見つけられなかったんですが、tweetに導かれるまま。ここから落としました。

webのついているバージョンとついていないバージョンの違いも何か説明されてたのですが、聞き逃してしまいました…。よく判らないのでweb付いているほうにします。普通ついてないほう選ぶのかもしれませんけど。インストーラーはなんだか嫌いなのでzip版にします。zip版なので、インストールはunzipするだけで終了。Javaはインストール済みなので気にしません。

Glassfishの起動

全部 asadmin でやるって言っていた気がするので、PowerShellから asadmin を叩いてヘルプを読んでみました。なんか改ページ位置とかが変でイマイチよく判りませんが、どうも起動は start-domain とするようです。

PS>.\asadmin start-domain
Waiting for domain1 to start ....
Successfully started the domain : domain1
domain  Location: C:\xxxx\glassfish3\glassfish\domains\domain1
Log File: C:\xxxx\glassfish3\glassfish\domains\domain1\logs\server.log
Admin Port: 4848
Command start-domain executed successfully.

なんか起動しました。こうなると http://localhost:4848 にアクセスすると管理コンソールが開きます。いろいろ出来るみたいですが、ここからデプロイしようとしたらJavaScriptエラーが出て出来ませんでしたのでスルーすることにします。

アプリケーションのデプロイ/アンデプロイ

Hudsonをダウンロードしてきてデプロイします。なんでHudsonかは気にしないでください。デプロイできるならきっとなんでも良かったんです。ダウンロードした hudson.war を任意の場所に保存して、デプロイ。

PS>.\asadmin deploy C:\xxxx\Downloads\hudson.war
Application deployed with name hudson.
Command deploy executed successfully.

簡単ですね。これで http://localhost:8080/hudson にアクセスすればHudsonが動いてます。へぇHudsonってこんな画面だったんだ(動いてるのはじめて見た人)。

バージョニング

話の中で興味を引いたのは、JCMKでGAEの紹介にあったのと同じような*1アプリケーションのバージョニング。同じアプリケーションを複数バージョンデプロイして、コマンド一発で切り替えが出来ると言う話。デプロイ絡みのトラブルはたまにあって面倒なので、こういうのがサーバレベルでサポートされてると言うのは嬉しい感じ。ではやり方ですが、deployのときに名前の後ろにコロンでつなげて書くみたいです。詳しくは asadmin help deploy やGlassFish3.1のガイド*2を参照してください。

hello:Aがある所にhello:Bをデプロイしてみます。この状態で http://localhost:8080/hello でAが動いています。hello:Aにはなりません。

PS>.\asadmin list-applications --long=true
NAME        TYPE   STATUS
hello:A     <web>  enabled
Command list-applications executed successfully.
PS>.\asadmin deploy --name=hello:B C:\xxxx\Downloads\helloB.war
Application deployed with name hello:B.
Command deploy executed successfully.
PS>.\asadmin list-applications --long=true
NAME        TYPE   STATUS
hello:A     <web>  disabled
hello:B     <web>  enabled
Command list-applications executed successfully.

これで同じアドレスでBが動きます。デフォルトでは後からデプロイしたほうが有効になるようです。これは --disabled=true を指定すれば前のを生かせます。切り替えは asadmin enable で名前を指定します。勝手に同じ名前の現在有効なのは無効になります。切り替えた後、無効な状態でCをデプロイしてみます。

PS>.\asadmin enable hello:A
Command enable executed successfully.
PS>.\asadmin list-applications --long=true
NAME        TYPE   STATUS
hello:A     <web>  enabled
hello:B     <web>  disabled
Command list-applications executed successfully.
PS>.\asadmin deploy --name=hello:C --enabled=false C:\xxxx\Downloads\helloC.war
Application deployed with name hello:C.
Command deploy executed successfully.
PS>.\asadmin list-applications --long=true
NAME        TYPE   STATUS
hello:A     <web>  enabled
hello:B     <web>  disabled
hello:C     <web>  disabled
Command list-applications executed successfully.

こんな感じになり、この手順だと最終的にAが動いている状態になります。

※ 本当はバージョン切り替えはダウンロードしたHudsonのバージョンが 1.386 で、管理画面開くと新しいの 1.389 が出てるとか出たので、そっちでやろうとしたのです。けど、なんかOutOfMemoryが出て失敗したので今度リトライすることにしました。


あ、停止は asadmin stop-domain ですかね。ではお疲れ様でした。

PS>.\asadmin stop-domain
Waiting for the domain to stop .........................
Timed out (60 seconds) waiting for the domain to stop.
Command stop-domain failed.

ええい、終了しねぇ!

*1:若干違うかも?

*2:私は見つけられてません。リンクたどっても3.0.1にしか辿り着かない…。