Glassfish V3 Previewを単体でインストールしてEJB3.1 liteを動かしてみた

こっちのほうが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名。