こっちのほうがSDKよりファイルサイズちいさいや。Webプロファイルで30MBみたい。どうせドキュメントとか読めないしいらんだろう。
NetBeans 6.7のGlassfish V3連携プラグインを導入するが、あんまりよろしく無いみたい。不具合大爆発。previewは起動時に100%失敗しましたとエラーが出るなー。その後も停止とかも気持ち悪い動き。画面のリフレッシュもされて無いみたい。完成度10%くらいかな。標準で入って無い理由はあるってことかな。
そもそもV3はPreludeも頻繁に不具合を起こす(起動しなくなるのがよくある。再インストールしかない。V2は安定してる)のでGlassfish側なのかNetBeans側なのかわからないけど。
とりあえずだましだまし動かしてみる。以前あんまり試さなかったシングルトンを触ってみる。
コードは以下のとおり
@Singleton public class Calc { @PostConstruct public void init() { System.out.println("初期化!"); } public int add(int a,int b){ System.out.println("計算!"); return a+b; } }
サーブレットは以下のとおり
System.out.println("計算します"); int result = calc.add(1, 2); System.out.println("1+2="+result);
実行
情報: Loading application javaee6test at /javaee6test 情報: Deployment of javaee6test done is 1,109 ms 情報: 計算します 情報: 初期化! 情報: 計算! 情報: 1+2=3
まぁ不思議でもなんでもない。JavaEE 6で追加された@Startupをつけてみる。
@Startup @Singleton public class Calc { @PostConstruct public void init() { System.out.println("初期化!"); } public int add(int a,int b){ System.out.println("計算!"); return a+b; } }
実行
情報: 初期化! 情報: Loading application javaee6test at /javaee6test 情報: Deployment of javaee6test done is 1,156 ms 情報: 計算します 情報: 計算! 情報: 1+2=3
初期化のタイミングがかわったのがわかるだろうか。
デプロイ時間も見て欲しい。1秒ちょっとだ。もちろんファイルが小さいというのもある。
JNDI名
JNDIは
java:global/javaee6test/Calc!calc.Calc java:global/javaee6test/Calc
の2つが登録されていた。
以下のように変えると
@Singleton(name="hoge")
java:global/javaee6test/hoge java:global/javaee6test/hoge!calc.Calc
このようになる。以前とは微妙に仕様が変わったようだ。
「javaee6test」というのはwar名。