T2Framework 0.4.1SNAPSHOTをもう少し触る + Cubbyの古いやつをGlassfishV3preludeで起動
前回思うように動かなかった(正確には、一応動くけどログの吐き出しやデプロイ時間等がダメ)のは0.4.0のサンプルにT2のjarファイル2つを差し替えたもの。
今回は
http://d.hatena.ne.jp/shot6/20081210#1228901357
のwarファイルからプロジェクトを作成し、2つのjarファイルを差し替えることにした。
でも、ソースファイルが同梱されてないようなのでここだけは0.4.0からもってくる。
実行!
ん、エラーがでとる。
ふむ。「ForeachUploadPage」というのがないとな。たしかにない。0.4.0のときには。というわけでサーバーから持ってくる。
T2のサンプルの構成はよくわからんが、たぶんこのへんのやつでいいと思う。
http://t-2.googlecode.com/svn/trunk/samples/t2-samples/src/main/java/examples/page/ForeachUploadPage.java
実行!動いた。
でも、今回もログが完全ではないし、デプロイに時間がかかる。管理ツールから実行しても時間がかかるのは同じ。
でも、GlassfishV3preludeのログを見ると出力されているっぽい。
そこでNetBeansを起動せずにGlassfishV3を直接起動。今度はデプロイ時間が早い!
デプロイ時間に差が出ることはわかったのだが、ログの表示が異なるのが気にかかる。
サーバー上のログは以下のようになっている。
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;||-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to INFO|#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;|02:39:05,687|#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;| |#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;||-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[root]|#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;|02:39:05,687|#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;| |#]
[#|2008-12-14T02:39:06.203+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;||-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.|#]
[#|2008-12-14T02:39:06.468+0900|INFO|glassfish|null|_ThreadID=17;_ThreadName=Thread-3;|02:39:06 [httpWorkerThread-4848-4] INFO o.t.contexts.impl.WebApplicationImpl - T2アプリケーションのコンポーネント登録を開始しました.
#]
でも、NetBeans上では
情報: |-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to INFO
情報:
情報: |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[root]
情報:
情報: |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
情報: Loading application T2_Application_Example at /t2-samples-0.4
という感じでコンポーネント登録のところがログが出ていないのだ。
ほかにも見てわかるのは
「02:39:05,687」といった部分も出力されていない。
Glassfish V2でも試す
逆にGlassfish V2ではこのへんだけが出力される。
deployed with moduleid = t2-samples-0.4
02:49:16,062
02:49:16,062
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16,093
02:49:16 [httpWorkerThread-4848-1] INFO o.t.contexts.impl.WebApplicationImpl - T2アプリケーションのコンポーネント登録を開始しました.
つまり、最初のほうにある
-INFO in ch.qos.logback.classic.joran.action.LevelAction - root level set to INFO
が出力されていない。のだが、出力内容を見る限りこちらのほうがはるかにましな結果のようだ。デプロイ時間もかかるということもないし。
T2で使われているログライブラリを試しに標準ロギングAPIに変えてみるとどうなるだろうか。Glassfishは標準ロギングを使ってるはずなので、この辺で問題が起きてるのかも。
でも、Tomcatは問題ないってのもよくわからんなぁ。
止まっている場所が気になったのでV3preludeのデプロイがとまっているように見えるところでログファイルを直接開くと、NetBeans上のログがストップしてからの経過時間でログの進み具合が違っているようだ。つまり、どこかでとまっているのではなく、コンポーネントの登録そのものに時間がかかっているということ。
コンポーネントの登録といえばCubbyがGlassfishでアホみたいに起動に時間がかかるというのに似ている。気になったので調べてみた。
古いCubbyサンプルをGlassfishV3preludeで起動
プロジェクトの作り直しをする体力が残っていないので古いままなのはご愛嬌。
今回はV3で以前試したCubby1.0.2を起動してみた。遅い…。しかもログが一切でない。
情報: Loading application cubby-examples-1.0 at /cubby-examples-1.0
情報: Deployment of cubby-examples-1.0 done is 18266 ms
ギャース。
ついでにいうと、トップページが出てからHelloをクリックして表示するまでに10秒とかかかる。そのほかも遅すぎて使い物にならない。なんだろ、これ。
今度はV2でCubbyサンプル起動
今度はV2で起動。起動速度は速くはないけど、V3ほど遅くないし(起動時間半分以下)、ログは一応出ているようだし、Helloアクションクリックして1秒あれば大概画面は出る。特に問題はないみたい。
というわけで
というわけで、NetBeansがわるいのかどうかはわからないけど、CubbyとT2はGlassfish V3 preludeはお勧めできそうにない。Cubbyは新しいのでは直ってるのかもしれないけど。V2ならばどちらも一応大丈夫なようだ。T2のログの前半が表示されていないけどこの部分はあまり気にするべき場所とも思えないから大丈夫かなぁ。
T2のロギングの処理の部分って差し替えが容易になっているのならぜひ標準ロギングに差し替えてみたい。Glassfishはアプリをとめずにログレベルの動的な変更とかが手軽にGUIで使えて便利だし。
直接上の話とは関係ないけど、Glassfish V3 preludeがログ管理機能がないというのにちょっとびびった。管理画面上から見ることは出来ないし、ローテートとかが手動でできないとデバッグとかたるそうだけど。やっぱりフルセットのV3がでるまではTomcatのように悪く言えば「おもちゃ」として見るのがいいようだ。JTAやコネクションプールが管理できる分かなりましだけど。