Glassfish3.1を使ってみる(ついでにHudsonも)
JavaFX & GlassFish 合同勉強会をUstreamで見て、Glassfishを触ってみよーって気分になったので。
ダウンロードとインストール
まずダウンロードします。ダウンロードサイトは見つけられなかったんですが、tweetに導かれるまま。ここから落としました。
早速3.1落としてます(・・)つURL #glassfishjo
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.
ええい、終了しねぇ!